This is an automated email from the ASF dual-hosted git repository.

jxue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git

commit abd91cc3757d6bcb99f07b288264d68dbbf8cdb4
Author: Junkai Xue <[email protected]>
AuthorDate: Wed Feb 6 12:08:46 2019 -0800

    Revert back for N -> N+1 fix
---
 .../helix/controller/rebalancer/DelayedAutoRebalancer.java   | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git 
a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/DelayedAutoRebalancer.java
 
b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/DelayedAutoRebalancer.java
index 62ad37f..1d00d60 100644
--- 
a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/DelayedAutoRebalancer.java
+++ 
b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/DelayedAutoRebalancer.java
@@ -529,7 +529,7 @@ public class DelayedAutoRebalancer extends 
AbstractRebalancer<ResourceController
     // we should drop all partitions from previous assigned instances.
     if 
(!currentMapWithPreferenceList.values().contains(HelixDefinedState.ERROR.name())
         && bestPossibleStateMap.size() > numReplicas && 
readyToDrop(currentStateMap,
-        bestPossibleStateMap, preferenceList, combinedPreferenceList)) {
+        bestPossibleStateMap, numReplicas, combinedPreferenceList)) {
       for (int i = 0; i < combinedPreferenceList.size() - numReplicas; i++) {
         String instanceToDrop = 
combinedPreferenceList.get(combinedPreferenceList.size() - i - 1);
         bestPossibleStateMap.put(instanceToDrop, 
HelixDefinedState.DROPPED.name());
@@ -551,15 +551,13 @@ public class DelayedAutoRebalancer extends 
AbstractRebalancer<ResourceController
   }
 
   private boolean readyToDrop(Map<String, String> currentStateMap,
-      Map<String, String> bestPossibleMap, List<String> preferenceList,
-      List<String> combinedPreferenceList) {
+      Map<String, String> bestPossibleMap, int numReplicas, List<String> 
combinedPreferenceList) {
     if (currentStateMap.size() != bestPossibleMap.size()) {
       return false;
     }
-    Set<String> tmpPreferenceSet = new HashSet<>(preferenceList);
-    tmpPreferenceSet.retainAll(combinedPreferenceList);
-
-    for (String instance : tmpPreferenceSet) {
+    
+    for (int i = 0; i < numReplicas; i++) {
+      String instance = combinedPreferenceList.get(i);
       if (!currentStateMap.containsKey(instance) || 
!currentStateMap.get(instance)
           .equals(bestPossibleMap.get(instance))) {
         return false;

Reply via email to