From 9dc4eba7a05fef9b1fbd5e7e69c9ecc698a1e431 Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Wed, 31 Jan 2018 14:02:11 -0800 Subject: [PATCH] HBASE-19906 TestZooKeeper Timeout --- .../main/java/org/apache/hadoop/hbase/master/HMaster.java | 5 +++++ .../hadoop/hbase/master/assignment/AssignmentManager.java | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 7bbf91f8ba..a75c9fe4d2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -865,6 +865,11 @@ public class HMaster extends HRegionServer implements MasterServices { // Make sure meta assigned before proceeding. status.setStatus("Recovering Meta Region"); + // Check if master is shutting down because issue initializing regionservers or balancer. + if (isStopped()) { + return; + } + // we recover hbase:meta region servers inside master initialization and // handle other failed servers in SSH in order to start up master node ASAP MasterMetaBootstrap metaBootstrap = createMetaBootstrap(this, status); 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 d6b73f4421..83e21b6660 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 @@ -1895,9 +1895,20 @@ public class AssignmentManager implements ServerListener { .getRegionInfoForReplica(RegionInfoBuilder.FIRST_META_REGIONINFO, RegionInfo.DEFAULT_REPLICA_ID); RegionState regionStateNode = getRegionStates().getRegionState(hri); - if (!regionStateNode.getServerName().equals(serverName)) { + if (regionStateNode == null) { + LOG.warn("RegionStateNode is null for " + hri); return; } + ServerName rsnServerName = regionStateNode.getServerName(); + if (rsnServerName == null) { + return; + } + if (rsnServerName != null && !rsnServerName.equals(serverName)) { + return; + } else { + LOG.warn("Empty ServerName in RegionStateNode; proceeding regardless in case latched " + + "RecoverMetaProcedure procedure for clean up."); + } // meta has been assigned to crashed server. LOG.info("Meta assigned to crashed " + serverName + "; reassigning..."); // Handle failure and wake event -- 2.11.0 (Apple Git-81)