HBASE-16133 RSGroupBasedLoadBalancer.retainAssignment() might miss a region


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/221c17b9
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/221c17b9
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/221c17b9

Branch: refs/heads/HBASE-15631-branch-1
Commit: 221c17b9c567825d04450ec93a955aa958af23fa
Parents: ca0f3c8
Author: Andrew Purtell <[email protected]>
Authored: Wed Jul 5 15:43:46 2017 -0700
Committer: Andrew Purtell <[email protected]>
Committed: Thu Jul 20 17:55:42 2017 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/221c17b9/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git 
a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
 
b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index f69f093..c1b3c7d 100644
--- 
a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ 
b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -216,9 +216,10 @@ public class RSGroupBasedLoadBalancer implements 
RSGroupableBalancer, LoadBalanc
         List<ServerName> candidateList = filterOfflineServers(info, servers);
         ServerName server = this.internalBalancer.randomAssignment(region,
             candidateList);
-        if (server != null && !assignments.containsKey(server)) {
-          assignments.put(server, new ArrayList<HRegionInfo>());
-        } else if (server != null) {
+        if (server != null) {
+          if (!assignments.containsKey(server)) {
+            assignments.put(server, new ArrayList<HRegionInfo>());
+          }
           assignments.get(server).add(region);
         } else {
           //if not server is available assign to bogus so it ends up in RIT

Reply via email to