HBASE-18493 [AMv2] Skipped re-assignment of regions on crashed server through AssignmentManager.checkIfShouldMoveSystemRegionAsync() as those regions are handled by ServerCrashProcedure
Signed-off-by: Michael Stack <st...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/acf9b87d Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/acf9b87d Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/acf9b87d Branch: refs/heads/HBASE-14070.HLC Commit: acf9b87dca2cd190f4b5318efd5dc48e19b317f4 Parents: 4c74a73 Author: Umesh Agashe <uaga...@cloudera.com> Authored: Tue Aug 15 14:00:04 2017 -0700 Committer: Michael Stack <st...@apache.org> Committed: Wed Aug 16 08:12:05 2017 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/master/assignment/AssignmentManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/acf9b87d/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java index 54cb1ca..0b23f47 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java @@ -480,6 +480,15 @@ public class AssignmentManager implements ServerListener { synchronized (checkIfShouldMoveSystemRegionLock) { List<RegionPlan> plans = new ArrayList<>(); for (ServerName server : getExcludedServersForSystemTable()) { + if (master.getServerManager().isServerDead(server)) { + // TODO: See HBASE-18494 and HBASE-18495. Though getExcludedServersForSystemTable() + // considers only online servers, the server could be queued for dead server + // processing. As region assignments for crashed server is handled by + // ServerCrashProcedure, do NOT handle them here. The goal is to handle this through + // regular flow of LoadBalancer as a favored node and not to have this special + // handling. + continue; + } List<HRegionInfo> regionsShouldMove = getCarryingSystemTables(server); if (!regionsShouldMove.isEmpty()) { for (HRegionInfo regionInfo : regionsShouldMove) {