Repository: hbase Updated Branches: refs/heads/0.98 80cf84838 -> 868027a50
HBASE-13526 TestRegionServerReportForDuty can be flaky: hang or timeout Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/868027a5 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/868027a5 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/868027a5 Branch: refs/heads/0.98 Commit: 868027a50051db2e20e5fb9f2babd782793a646b Parents: 80cf848 Author: Jerry He <jerry...@apache.org> Authored: Wed Apr 22 22:36:40 2015 -0700 Committer: Jerry He <jerry...@apache.org> Committed: Wed Apr 22 22:36:40 2015 -0700 ---------------------------------------------------------------------- .../TestRegionServerReportForDuty.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/868027a5/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java index 7b3644e..80acb3f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java @@ -90,6 +90,8 @@ public class TestRegionServerReportForDuty { master.start(); rs.start(); + waitForClusterOnline(master); + // Add a 2nd region server cluster.getConfiguration().set(HConstants.REGION_SERVER_IMPL, MyRegionServer.class.getName()); rs2 = cluster.addRegionServer(); @@ -99,7 +101,7 @@ public class TestRegionServerReportForDuty { LOG.debug("Starting 2nd region server: " + rs2.getRegionServer().getServerName()); rs2.start(); - waitForClusterOnline(master); + waitForSecondRsStarted(); // Stop the current master. master.getMaster().stop("Stopping master"); @@ -124,8 +126,7 @@ public class TestRegionServerReportForDuty { private void waitForClusterOnline(MasterThread master) throws InterruptedException { while (true) { - if (master.getMaster().isInitialized() - && ((MyRegionServer) rs2.getRegionServer()).getRpcStubCreatedFlag() == true) { + if (master.getMaster().isInitialized()) { break; } Thread.sleep(SLEEP_INTERVAL); @@ -134,6 +135,16 @@ public class TestRegionServerReportForDuty { rs.waitForServerOnline(); } + private void waitForSecondRsStarted() throws InterruptedException { + while (true) { + if (((MyRegionServer) rs2.getRegionServer()).getRpcStubCreatedFlag() == true) { + break; + } + Thread.sleep(SLEEP_INTERVAL); + LOG.debug("Waiting 2nd RS to be started ..."); + } + } + // Create a Region Server that provide a hook so that we can wait for the master switch over // before continuing reportForDuty to the mater. // The idea is that we get a RPC connection to the first active master, then we wait. @@ -168,6 +179,7 @@ public class TestRegionServerReportForDuty { try { Thread.sleep(SLEEP_INTERVAL); } catch (InterruptedException e) { + return null; } LOG.debug("Waiting for master switch over ... "); }