Index: src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (revision 1206395) +++ src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (working copy) @@ -1559,34 +1559,46 @@ } /** - * Creates an znode with OPENED state. + * Gets a ZooKeeperWatcher. * @param TEST_UTIL - * @param region - * @param serverName - * @return - * @throws IOException - * @throws ZooKeeperConnectionException - * @throws KeeperException - * @throws NodeExistsException */ - public static ZooKeeperWatcher createAndForceNodeToOpenedState( - HBaseTestingUtility TEST_UTIL, HRegion region, - ServerName serverName) throws ZooKeeperConnectionException, - IOException, KeeperException, NodeExistsException { + public static ZooKeeperWatcher getZooKeeperWatcher( + HBaseTestingUtility TEST_UTIL) throws ZooKeeperConnectionException, + IOException { ZooKeeperWatcher zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(), "unittest", new Abortable() { boolean aborted = false; + @Override public void abort(String why, Throwable e) { aborted = true; throw new RuntimeException("Fatal ZK error, why=" + why, e); } + @Override public boolean isAborted() { return aborted; } }); - + return zkw; + } + + /** + * Creates a znode with OPENED state. + * @param TEST_UTIL + * @param region + * @param serverName + * @return + * @throws IOException + * @throws ZooKeeperConnectionException + * @throws KeeperException + * @throws NodeExistsException + */ + public static ZooKeeperWatcher createAndForceNodeToOpenedState( + HBaseTestingUtility TEST_UTIL, HRegion region, + ServerName serverName) throws ZooKeeperConnectionException, + IOException, KeeperException, NodeExistsException { + ZooKeeperWatcher zkw = getZooKeeperWatcher(TEST_UTIL); ZKAssign.createNodeOffline(zkw, region.getRegionInfo(), serverName); int version = ZKAssign.transitionNodeOpening(zkw, region .getRegionInfo(), serverName); Index: src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java (revision 1206395) +++ src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java (working copy) @@ -306,21 +306,7 @@ log("Cluster started"); // Create a ZKW to use in the test - ZooKeeperWatcher zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(), - "unittest", new Abortable() { - boolean aborted = false; - @Override - public void abort(String why, Throwable e) { - this.aborted = true; - throw new RuntimeException("Fatal ZK error, why=" + why, e); - } - - @Override - public boolean isAborted() { - return this.aborted; - } - - }); + ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL); // get all the master threads List masterThreads = cluster.getMasterThreads(); Index: src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildBase.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildBase.java (revision 1206395) +++ src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildBase.java (working copy) @@ -29,9 +29,11 @@ import org.apache.hadoop.hbase.client.HConnectionManager; import org.apache.hadoop.hbase.util.HBaseFsck; import org.apache.hadoop.hbase.util.HBaseFsck.ErrorReporter.ERROR_CODE; +import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; import org.junit.Test; import org.junit.experimental.categories.Category; - +import org.apache.hadoop.hbase.zookeeper.ZKAssign; +import org.apache.hadoop.hbase.HBaseTestingUtility; /** * This builds a table, removes info from meta, and then rebuilds meta. */ @@ -64,6 +66,12 @@ // bring up the minicluster TEST_UTIL.startMiniZKCluster(); // tables seem enabled by default TEST_UTIL.restartHBaseCluster(3); + + ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL); + + LOG.info("Waiting for no more RIT"); + ZKAssign.blockUntilNoRIT(zkw); + LOG.info("No more RIT in ZK, now doing final test verification"); // everything is good again. assertEquals(4, scanMeta()); Index: src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildHole.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildHole.java (revision 1206747) +++ src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildHole.java (working copy) @@ -24,10 +24,13 @@ import java.util.Arrays; +import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MediumTests; import org.apache.hadoop.hbase.util.HBaseFsck; import org.apache.hadoop.hbase.util.HBaseFsck.ErrorReporter.ERROR_CODE; +import org.apache.hadoop.hbase.zookeeper.ZKAssign; +import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -67,6 +70,12 @@ TEST_UTIL.startMiniZKCluster(); // tables seem enabled by default TEST_UTIL.restartHBaseCluster(3); + ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL); + + LOG.info("Waiting for no more RIT"); + ZKAssign.blockUntilNoRIT(zkw); + LOG.info("No more RIT in ZK, now doing final test verification"); + // Meta still messed up. assertEquals(0, scanMeta()); HTableDescriptor[] htbls = TEST_UTIL.getHBaseAdmin().listTables(); Index: src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildOverlap.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildOverlap.java (revision 1206747) +++ src/test/java/org/apache/hadoop/hbase/util/hbck/TestOfflineMetaRebuildOverlap.java (working copy) @@ -24,15 +24,18 @@ import java.util.Arrays; +import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MediumTests; import org.apache.hadoop.hbase.util.HBaseFsck; import org.apache.hadoop.hbase.util.HBaseFsck.ErrorReporter.ERROR_CODE; import org.apache.hadoop.hbase.util.HBaseFsck.HbckInfo; +import org.apache.hadoop.hbase.zookeeper.ZKAssign; +import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; import org.junit.Test; +import org.junit.experimental.categories.Category; import com.google.common.collect.Multimap; -import org.junit.experimental.categories.Category; /** * This builds a table, builds an overlap, and then fails when attempting to @@ -75,7 +78,13 @@ // bring up the minicluster TEST_UTIL.startMiniZKCluster(); // tables seem enabled by default TEST_UTIL.restartHBaseCluster(3); + + ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL); + LOG.info("Waiting for no more RIT"); + ZKAssign.blockUntilNoRIT(zkw); + LOG.info("No more RIT in ZK, now doing final test verification"); + // Meta still messed up. assertEquals(0, scanMeta()); HTableDescriptor[] htbls = TEST_UTIL.getHBaseAdmin().listTables();