diff --git a/src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java b/src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java index 8e5c395..f83d3fb 100644 --- a/src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java +++ b/src/main/java/org/apache/hadoop/hbase/master/DefaultLoadBalancer.java @@ -564,10 +564,15 @@ public class DefaultLoadBalancer implements LoadBalancer { for (Map.Entry>> server: serversByLoad.entrySet()) { int regionCount = server.getKey().getLoad(); - if (regionCount >= min) { - break; + if ((regionCount >= min) && (regionCount > 0)) { + continue; + } + int regionToTake = min -regionCount; + if (regionToTake == 0) + { + regionToTake = 1; } - underloadedServers.put(server.getKey().getServerName(), min - regionCount); + underloadedServers.put(server.getKey().getServerName(), regionToTake); } // number of servers that get new regions int serversUnderloaded = underloadedServers.size();