From d754c2f703a292d6f1700fb27c9e8c5b9c2d75db Mon Sep 17 00:00:00 2001 From: zhangduo Date: Mon, 1 Aug 2016 15:13:49 +0800 Subject: [PATCH] HBASE-16309 TestDefaultCompactSelection.testCompactionRatio is flaky --- .../hbase/regionserver/TestDefaultCompactSelection.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java index dbd6f11..1fa8d09 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java @@ -33,7 +33,7 @@ import org.junit.experimental.categories.Category; public class TestDefaultCompactSelection extends TestCompactionPolicy { @Test - public void testCompactionRatio() throws IOException { + public void testCompactionRatio() throws IOException, InterruptedException { /** * NOTE: these tests are specific to describe the implementation of the * current compaction algorithm. Developed to ensure that refactoring @@ -90,10 +90,16 @@ public class TestDefaultCompactSelection extends TestCompactionPolicy { conf.setFloat("hbase.hregion.majorcompaction.jitter", 0); store.storeEngine.getCompactionPolicy().setConf(conf); try { + // The modTime of the mocked store file is currentTimeMillis, so we need to sleep a bit to + // make sure that now - lowestModTime is greater than major compaction period(1ms). // trigger an aged major compaction - compactEquals(sfCreate(50,25,12,12), 50, 25, 12, 12); + List candidates = sfCreate(50, 25, 12, 12); + Thread.sleep(10); + compactEquals(candidates, 50, 25, 12, 12); // major sure exceeding maxCompactSize also downgrades aged minors - compactEquals(sfCreate(100,50,23,12,12), 23, 12, 12); + candidates = sfCreate(100, 50, 23, 12, 12); + Thread.sleep(10); + compactEquals(candidates, 23, 12, 12); } finally { conf.setLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24); conf.setFloat("hbase.hregion.majorcompaction.jitter", 0.20F); -- 2.7.4