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
