Author: larsh Date: Sat Jan 4 04:49:29 2014 New Revision: 1555321 URL: http://svn.apache.org/r1555321 Log: HBASE-10279 TestStore.testDeleteExpiredStoreFiles is flaky
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=1555321&r1=1555320&r2=1555321&view=diff ============================================================================== --- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (original) +++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java Sat Jan 4 04:49:29 2014 @@ -1316,7 +1316,7 @@ public class Store extends SchemaConfigu } // TODO: Use better method for determining stamp of last major (HBASE-2990) long lowTimestamp = getLowestTimestamp(filesToCompact); - long now = System.currentTimeMillis(); + long now = EnvironmentEdgeManager.currentTimeMillis(); if (lowTimestamp > 0l && lowTimestamp < (now - mcTime)) { // Major compaction time has elapsed. if (filesToCompact.size() == 1) { Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java?rev=1555321&r1=1555320&r2=1555321&view=diff ============================================================================== --- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java (original) +++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java Sat Jan 4 04:49:29 2014 @@ -151,6 +151,8 @@ public class TestStore extends TestCase } public void testDeleteExpiredStoreFiles() throws Exception { + ManualEnvironmentEdge mee = new ManualEnvironmentEdge(); + EnvironmentEdgeManagerTestHelper.injectEdge(mee); int storeFileNum = 4; int ttl = 4; @@ -172,8 +174,10 @@ public class TestStore extends TestCase this.store.add(new KeyValue(row, family, qf2, timeStamp, (byte[]) null)); this.store.add(new KeyValue(row, family, qf3, timeStamp, (byte[]) null)); flush(i); - Thread.sleep(sleepTime); + mee.incValue(sleepTime); } + // move time forward a bit more, so that the first file is expired + mee.incValue(1); // Verify the total number of store files assertEquals(storeFileNum, this.store.getStorefiles().size()); @@ -187,7 +191,7 @@ public class TestStore extends TestCase // If not the first compaction, there is another empty store file, assertEquals(Math.min(i, 2), cr.getFiles().size()); for (int j = 0; i < cr.getFiles().size(); j++) { - assertTrue(cr.getFiles().get(j).getReader().getMaxTimestamp() < (System + assertTrue(cr.getFiles().get(j).getReader().getMaxTimestamp() < (EnvironmentEdgeManager .currentTimeMillis() - this.store.scanInfo.getTtl())); } // Verify that the expired store file is compacted to an empty store file. @@ -197,7 +201,7 @@ public class TestStore extends TestCase .getEntries()); // Let the next store file expired. - Thread.sleep(sleepTime); + mee.incValue(sleepTime); } }