Index: hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java (revision 1459914) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java (working copy) @@ -25,8 +25,10 @@ import static org.junit.Assert.fail; import java.io.IOException; +import java.util.HashSet; import java.util.List; import java.util.Random; +import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; @@ -354,8 +356,22 @@ public void chore() { try { Random random = new Random(); - List regions = admin.getTableRegions(tableName); - byte[] regionName = regions.get(random.nextInt(regions.size())).getRegionName(); + List regions = TEST_UTIL.getHBaseCluster().getRegions(tableName); + Set attempted = new HashSet(); + int idx; + do { + idx = random.nextInt(regions.size()); + // if we have just tried this region, there is no need to try again + if (attempted.contains(idx)) continue; + try { + regions.get(idx).checkSplit(); + break; + } catch (Exception ex) { + LOG.warn("Caught exception", ex); + attempted.add(idx); + } + } while (true); + byte[] regionName = regions.get(idx).getRegionName(); admin.flush(regionName); admin.compact(regionName); admin.split(regionName);