narendly commented on a change in pull request #514: The WAGED rebalancer returns the previously calculated assignment on calculation failure URL: https://github.com/apache/helix/pull/514#discussion_r337308078
########## File path: helix-core/src/main/java/org/apache/helix/controller/rebalancer/waged/WagedRebalancer.java ########## @@ -285,6 +289,40 @@ public void close() { return finalIdealStateMap; } + /** + * Convert the resource assignment map into an IdealState map. + */ + private Map<String, IdealState> convertResourceAssignment( + ResourceControllerDataProvider clusterData, Map<String, ResourceAssignment> assignments) + throws HelixRebalanceException { + // Convert the assignments into IdealState for the following state mapping calculation. + Map<String, IdealState> finalIdealStateMap = new HashMap<>(); + for (String resourceName : assignments.keySet()) { + try { + IdealState currentIdealState = clusterData.getIdealState(resourceName); + Map<String, Integer> statePriorityMap = + clusterData.getStateModelDef(currentIdealState.getStateModelDefRef()) + .getStatePriorityMap(); + // Create a new IdealState instance which contains the new calculated assignment in the + // preference list. + IdealState newIdealState = new IdealState(resourceName); + // Copy the simple fields + newIdealState.getRecord().setSimpleFields(currentIdealState.getRecord().getSimpleFields()); + // Sort the preference list according to state priority. + newIdealState.setPreferenceLists( + getPreferenceLists(assignments.get(resourceName), statePriorityMap)); + // Note the state mapping in the new assignment won't directly propagate to the map fields. + // The rebalancer will calculate for the final state mapping considering the current states. + finalIdealStateMap.put(resourceName, newIdealState); + } catch (Exception ex) { + throw new HelixRebalanceException( + "Fail to calculate the new IdealState for resource: " + resourceName, Review comment: Failed ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@helix.apache.org For additional commands, e-mail: reviews-h...@helix.apache.org