From 030cd8b33464f22a16d553f56d59a2905feb3704 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 Includes move of TestQoSFunction from smalltests to mediumtests; it timedout in a run. --- .../src/main/java/org/apache/hadoop/hbase/master/HMaster.java | 5 +++++ .../hadoop/hbase/master/assignment/AssignmentManager.java | 10 +++++++++- .../org/apache/hadoop/hbase/regionserver/TestQosFunction.java | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) 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..4bcd771d6e 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,17 @@ 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 && !rsnServerName.equals(serverName)) { + return; + } else if (rsnServerName == null) { + LOG.warn("Empty ServerName in RegionStateNode; proceeding anyways in case latched " + + "RecoverMetaProcedure so meta latch gets cleaned up."); + } // meta has been assigned to crashed server. LOG.info("Meta assigned to crashed " + serverName + "; reassigning..."); // Handle failure and wake event diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestQosFunction.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestQosFunction.java index de415c7ca9..c8f887b362 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestQosFunction.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestQosFunction.java @@ -23,7 +23,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.testclassification.RegionServerTests; -import org.apache.hadoop.hbase.testclassification.SmallTests; +import org.apache.hadoop.hbase.testclassification.MediumTests; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -36,7 +36,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiReque * Basic test that qos function is sort of working; i.e. a change in method naming style * over in pb doesn't break it. */ -@Category({RegionServerTests.class, SmallTests.class}) +@Category({RegionServerTests.class, MediumTests.class}) public class TestQosFunction extends QosTestHelper { @ClassRule -- 2.11.0 (Apple Git-81)