From 53c5bcc5827217bfa05136bd14b78fde93529783 Mon Sep 17 00:00:00 2001 From: Umesh Agashe Date: Tue, 15 Aug 2017 14:00:04 -0700 Subject: [PATCH] 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 --- .../hbase/master/assignment/AssignmentManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 54cb1cadc0e..0b23f47eada 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 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 regionsShouldMove = getCarryingSystemTables(server); if (!regionsShouldMove.isEmpty()) { for (HRegionInfo regionInfo : regionsShouldMove) {