You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2014/03/11 01:41:31 UTC

svn commit: r1576156 - /hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java

Author: tedyu
Date: Tue Mar 11 00:41:31 2014
New Revision: 1576156

URL: http://svn.apache.org/r1576156
Log:
HBASE-10704 BaseLoadBalancer#roundRobinAssignment() may add same region to assignment plan multiple times


Modified:
    hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java

Modified: hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java?rev=1576156&r1=1576155&r2=1576156&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java (original)
+++ hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java Tue Mar 11 00:41:31 2014
@@ -927,17 +927,20 @@ public abstract class BaseLoadBalancer i
     // assign the remaining by going through the list and try to assign to servers one-by-one
     serverIdx = RANDOM.nextInt(numServers);
     for (HRegionInfo region : unassignedRegions) {
+      boolean assigned = false;
       for (int j = 0; j < numServers; j++) { // try all servers one by one
         ServerName serverName = servers.get((j + serverIdx) % numServers);
         if (!cluster.wouldLowerAvailability(region, serverName)) {
           assignments.get(serverName).add(region);
           cluster.doAssignRegion(region, serverName);
           serverIdx = (j + serverIdx + 1) % numServers; //remain from next server
+          assigned = true;
           break;
-        } else {
-          lastFewRegions.add(region);
         }
       }
+      if (!assigned) {
+        lastFewRegions.add(region);
+      }
     }
     // just sprinkle the rest of the regions on random regionservers. The balanceCluster will
     // make it optimal later. we can end up with this if numReplicas > numServers.