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 1447622) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (working copy) @@ -743,14 +743,30 @@ @Override int createNodeSplitting(ZooKeeperWatcher zkw, HRegionInfo region, ServerName serverName) throws KeeperException, IOException { - throw new IOException(); + throw new CreateSplittingNodeFailedException(); } }; } + String node = ZKAssign.getNodeName(regionServer.getZooKeeper(), regions + .get(0).getRegionInfo().getEncodedName()); + regionServer.getZooKeeper().sync(node); + for (int i = 0; i < 100; i++) { + // We expect the znode to be deleted by this time. Here the + // znode could be in OPENED state and the + // master has not yet deleted the znode. + if (ZKUtil.checkExists(regionServer.getZooKeeper(), node) != -1) { + Thread.sleep(100); + } + } try { st.execute(regionServer, regionServer); } catch (IOException e) { - String node = ZKAssign.getNodeName(regionServer.getZooKeeper(), regions.get(0) + // check for the specific instance incase the Split failed due to the + // existence of the znode in OPENED state. + // This will atleast make the test to fail; + assertTrue("Should be instance of CreateSplittingNodeFailedException", + e instanceof CreateSplittingNodeFailedException); + node = ZKAssign.getNodeName(regionServer.getZooKeeper(), regions.get(0) .getRegionInfo().getEncodedName()); { assertTrue(ZKUtil.checkExists(regionServer.getZooKeeper(), node) == -1); @@ -979,5 +995,11 @@ } } + private static class CreateSplittingNodeFailedException extends IOException { + public CreateSplittingNodeFailedException() { + super(); + } + } + }