himanshukandwal commented on code in PR #2778:
URL: https://github.com/apache/helix/pull/2778#discussion_r1526730635


##########
helix-core/src/main/java/org/apache/helix/controller/rebalancer/MaintenanceRebalancer.java:
##########
@@ -55,12 +59,19 @@ public IdealState computeNewIdealState(String resourceName, 
IdealState currentId
 
     // One principal is to prohibit DROP -> OFFLINE and OFFLINE -> DROP state 
transitions.
     // Derived preference list from current state with state priority
+    StateModelDefinition stateModelDef = 
clusterData.getStateModelDef(currentIdealState.getStateModelDefRef());
+
     for (Partition partition : currentStateMap.keySet()) {
       Map<String, String> stateMap = currentStateMap.get(partition);
       List<String> preferenceList = new ArrayList<>(stateMap.keySet());
+
+      // This sorting preserves the ordering of current state hosts in the 
order of current IS pref list
       Collections.sort(preferenceList, new 
PreferenceListNodeComparator(stateMap,
-          
clusterData.getStateModelDef(currentIdealState.getStateModelDefRef()),
-          Collections.<String>emptyList()));
+          stateModelDef, 
currentIdealState.getPreferenceList(partition.getPartitionName())));
+
+      // This sorts the current state hosts based on the priority
+      preferenceList.sort(new StatePriorityComparator(stateMap, 
stateModelDef));

Review Comment:
   Yes, updated code with an example as well. Thanks Komal!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to