diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java index 41a97136b89..764cf1369df 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java @@ -77,6 +77,8 @@ import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegionServer; import org.apache.hadoop.hbase.regionserver.Region; import org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost; +import org.apache.hadoop.hbase.regionserver.Store; +import org.apache.hadoop.hbase.regionserver.StoreFile; import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.util.Bytes; @@ -85,7 +87,6 @@ import org.apache.zookeeper.KeeperException; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -135,7 +136,7 @@ public class TestNamespaceAuditor { } } assertTrue("Quota manager not enabled", UTIL.getHBaseCluster().getMaster() - .getMasterQuotaManager().isQuotaEnabled()); + .getMasterQuotaManager().isQuotaEnabled()); } @Test @@ -425,7 +426,7 @@ public class TestNamespaceAuditor { assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size()); } - @Ignore("Hangs on occasion waiting on countdown latch") @Test + @Test public void testRegionOperations() throws Exception { String nsp1 = prefix + "_regiontest"; NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1) @@ -458,17 +459,24 @@ public class TestNamespaceAuditor { assertEquals(1, stateInfo.getTables().size()); assertEquals(1, stateInfo.getRegionCount()); restartMaster(); - ADMIN.split(tableOne, Bytes.toBytes("500")); + HRegion actualRegion = UTIL.getHBaseCluster().getRegions(tableOne).get(0); CustomObserver observer = (CustomObserver) actualRegion.getCoprocessorHost().findCoprocessor( - CustomObserver.class.getName()); + CustomObserver.class.getName()); assertNotNull(observer); + + ADMIN.split(tableOne, Bytes.toBytes("500")); observer.postSplit.await(); assertEquals(2, ADMIN.getTableRegions(tableOne).size()); actualRegion = UTIL.getHBaseCluster().getRegions(tableOne).get(0); observer = (CustomObserver) actualRegion.getCoprocessorHost().findCoprocessor( CustomObserver.class.getName()); assertNotNull(observer); + + //Before we go on split, we should remove all reference store files. + ADMIN.compact(tableOne); + observer.postCompact.await(); + ADMIN.split(tableOne, getSplitKey(actualRegion.getRegionInfo().getStartKey(), actualRegion.getRegionInfo().getEndKey())); observer.postSplit.await(); @@ -551,6 +559,7 @@ public class TestNamespaceAuditor { public static class CustomObserver extends BaseRegionObserver{ volatile CountDownLatch postSplit; volatile CountDownLatch preSplitBeforePONR; + volatile CountDownLatch postCompact; @Override public void postCompleteSplit(ObserverContext ctx) @@ -558,16 +567,24 @@ public class TestNamespaceAuditor { postSplit.countDown(); } + @Override + public void postCompact(ObserverContext e, + Store store, StoreFile resultFile) throws IOException { + postCompact.countDown(); + } + @Override public void preSplitBeforePONR(ObserverContext ctx, byte[] splitKey, List metaEntries) throws IOException { preSplitBeforePONR.countDown(); } + @Override public void start(CoprocessorEnvironment e) throws IOException { postSplit = new CountDownLatch(1); preSplitBeforePONR = new CountDownLatch(1); + postCompact = new CountDownLatch(1); } }