Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (revision 1409896) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (working copy) @@ -158,8 +158,7 @@ // Now try splitting and it should work. split(hri, server, regionCount); // Get daughters - List daughters = cluster.getRegions(tableName); - assertTrue(daughters.size() >= 2); + List daughters = assertDaughters(tableName); // Assert the ephemeral node is up in zk. String path = ZKAssign.getNodeName(TESTING_UTIL.getZooKeeperWatcher(), hri.getEncodedName()); @@ -284,8 +283,7 @@ // Now split. split(hri, server, regionCount); // Get daughters - List daughters = cluster.getRegions(tableName); - assertTrue(daughters.size() >= 2); + List daughters = assertDaughters(tableName); // Remove one of the daughters from .META. to simulate failed insert of // daughter region up into .META. removeDaughterFromMeta(daughters.get(0).getRegionName()); @@ -341,11 +339,7 @@ // Now split. split(hri, server, regionCount); // Get daughters - List daughters; - do { - daughters = cluster.getRegions(tableName); - } while (daughters.size() < 2); - assertTrue(daughters.size() >= 2); + List daughters = assertDaughters(tableName); // Now split one of the daughters. regionCount = ProtobufUtil.getOnlineRegions(server).size(); HRegionInfo daughter = daughters.get(0).getRegionInfo(); @@ -426,14 +420,7 @@ // Now try splitting and it should work. this.admin.split(hri.getRegionNameAsString()); - while (!(cluster.getRegions(tableName).size() >= 2)) { - LOG.debug("Waiting on region to split"); - Thread.sleep(100); - } - - // Get daughters - List daughters = cluster.getRegions(tableName); - assertTrue(daughters.size() >= 2); + assertDaughters(tableName); // Assert the ephemeral node is up in zk. String path = ZKAssign.getNodeName(t.getConnection() .getZooKeeperWatcher(), hri.getEncodedName()); @@ -502,14 +489,7 @@ printOutRegions(server, "Initial regions: "); this.admin.split(hri.getRegionNameAsString()); - while (!(cluster.getRegions(tableName).size() >= 2)) { - LOG.debug("Waiting on region to split"); - Thread.sleep(100); - } - - // Get daughters - List daughters = cluster.getRegions(tableName); - assertTrue(daughters.size() >= 2); + assertDaughters(tableName); // Assert the ephemeral node is up in zk. String path = ZKAssign.getNodeName(t.getConnection() .getZooKeeperWatcher(), hri.getEncodedName()); @@ -786,6 +766,19 @@ } + private List assertDaughters(byte[] tableName) + throws InterruptedException { + List daughters = null; + // try up to 10s + for (int i=0; i<10; i++) { + daughters = cluster.getRegions(tableName); + if (daughters.size() >= 2) break; + Thread.sleep(1000); + } + assertTrue(daughters.size() >= 2); + return daughters; + } + private MockMasterWithoutCatalogJanitor abortAndWaitForMaster() throws IOException, InterruptedException { cluster.abortMaster(0);