You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2012/11/15 23:23:14 UTC
svn commit: r1410064 -
/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
Author: larsh
Date: Thu Nov 15 22:23:13 2012
New Revision: 1410064
URL: http://svn.apache.org/viewvc?rev=1410064&view=rev
Log:
HBASE-7166 TestSplitTransactionOnCluster tests are flaky
Modified:
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java?rev=1410064&r1=1410063&r2=1410064&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java Thu Nov 15 22:23:13 2012
@@ -145,8 +145,7 @@ public class TestSplitTransactionOnClust
// Now try splitting and it should work.
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ List<HRegion> daughters = checkAndGetDaughters(tableName);
// Assert the ephemeral node is up in zk.
String path = ZKAssign.getNodeName(t.getConnection().getZooKeeperWatcher(),
hri.getEncodedName());
@@ -174,7 +173,12 @@ public class TestSplitTransactionOnClust
assertTrue(daughters.contains(r));
}
// Finally assert that the ephemeral SPLIT znode was cleaned up.
- stats = t.getConnection().getZooKeeperWatcher().getRecoverableZooKeeper().exists(path, false);
+ for (int i=0; i<100; i++) {
+ // wait a bit (10s max) for the node to disappear
+ stats = t.getConnection().getZooKeeperWatcher().getRecoverableZooKeeper().exists(path, false);
+ if (stats == null) break;
+ Thread.sleep(100);
+ }
LOG.info("EPHEMERAL NODE AFTER SERVER ABORT, path=" + path + ", stats=" + stats);
assertTrue(stats == null);
} finally {
@@ -228,8 +232,7 @@ public class TestSplitTransactionOnClust
// Now try splitting and it should work.
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ checkAndGetDaughters(tableName);
// OK, so split happened after we cleared the blocking node.
} finally {
admin.setBalancerRunning(true, false);
@@ -271,8 +274,7 @@ public class TestSplitTransactionOnClust
// Now split.
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ List<HRegion> daughters = checkAndGetDaughters(tableName);
// Remove one of the daughters from .META. to simulate failed insert of
// daughter region up into .META.
removeDaughterFromMeta(daughters.get(0).getRegionName());
@@ -328,8 +330,7 @@ public class TestSplitTransactionOnClust
// Now split.
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ List<HRegion> daughters = checkAndGetDaughters(tableName);
// Now split one of the daughters.
regionCount = server.getOnlineRegions().size();
HRegionInfo daughter = daughters.get(0).getRegionInfo();
@@ -411,8 +412,7 @@ public class TestSplitTransactionOnClust
// Now try splitting and it should work.
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ checkAndGetDaughters(tableName);
// Assert the ephemeral node is up in zk.
String path = ZKAssign.getNodeName(t.getConnection()
.getZooKeeperWatcher(), hri.getEncodedName());
@@ -489,8 +489,7 @@ public class TestSplitTransactionOnClust
split(hri, server, regionCount);
// Get daughters
- List<HRegion> daughters = cluster.getRegions(tableName);
- assertTrue(daughters.size() >= 2);
+ checkAndGetDaughters(tableName);
// Assert the ephemeral node is up in zk.
String path = ZKAssign.getNodeName(t.getConnection()
.getZooKeeperWatcher(), hri.getEncodedName());
@@ -836,7 +835,20 @@ public class TestSplitTransactionOnClust
}
}
-
+
+ private List<HRegion> checkAndGetDaughters(byte[] tableName)
+ throws InterruptedException {
+ List<HRegion> daughters = null;
+ // try up to 10s
+ for (int i=0; i<100; i++) {
+ daughters = cluster.getRegions(tableName);
+ if (daughters.size() >= 2) break;
+ Thread.sleep(100);
+ }
+ assertTrue(daughters.size() >= 2);
+ return daughters;
+ }
+
private MockMasterWithoutCatalogJanitor abortAndWaitForMaster()
throws IOException, InterruptedException {
cluster.abortMaster(0);