Index: src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java (revision 101115) +++ src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java (working copy) @@ -330,8 +330,8 @@ if (regionsToPut == 0) { regionsToPut = 1; - maxToTake--; } + maxToTake -= regionsToPut; underloadedServers.put(server.getKey().getServerName(), regionsToPut); } // number of servers that get new regions @@ -442,6 +442,13 @@ if(regionCount >= max) { break; } + BalanceInfo balanceInfo = serverBalanceInfo.get(server.getKey().getServerName()); + if(balanceInfo != null) { + regionCount += balanceInfo.getNumRegionsAdded(); + } + if(regionCount >= max) { + continue; + } addRegionPlan(regionsToMove, fetchFromTail, server.getKey().getServerName(), regionsToReturn); if (emptyRegionServerPresent) {