From 581c3f2634e82343ed0d27a4a0ce5d407f445567 Mon Sep 17 00:00:00 2001 From: larsh Date: Fri, 19 Jul 2013 16:54:55 +0000 Subject: [PATCH] BASE-8432 a table with unbalanced regions will balance indefinitely with the 'org.apache.hadoop.hbase.master.DefaultLoadBalancer' (Wang Qiang and Ted) git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1504939 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hbase/master/balancer/DefaultLoadBalancer.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java index 42aa6e17d18..9b899278838 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java @@ -266,8 +266,8 @@ public class DefaultLoadBalancer extends BaseLoadBalancer { if (regionsToPut == 0) { regionsToPut = 1; - maxToTake--; } + maxToTake -= regionsToPut; underloadedServers.put(server.getKey().getServerName(), regionsToPut); } // number of servers that get new regions @@ -375,6 +375,10 @@ public class DefaultLoadBalancer extends BaseLoadBalancer { for (Map.Entry> server : serversByLoad.entrySet()) { int regionCount = server.getKey().getLoad(); + BalanceInfo balanceInfo = serverBalanceInfo.get(server.getKey().getServerName()); + if(balanceInfo != null) { + regionCount += balanceInfo.getNumRegionsAdded(); + } if(regionCount >= max) { break; }