HBASE-16309 TestDefaultCompactSelection.testCompactionRatio is flaky
This commit is contained in:
parent
e11aafae95
commit
6c8d1f0ae8
|
@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.regionserver.RSRpcServices;
|
||||||
import org.apache.hadoop.hbase.regionserver.StoreConfigInformation;
|
import org.apache.hadoop.hbase.regionserver.StoreConfigInformation;
|
||||||
import org.apache.hadoop.hbase.regionserver.StoreFile;
|
import org.apache.hadoop.hbase.regionserver.StoreFile;
|
||||||
import org.apache.hadoop.hbase.regionserver.StoreUtils;
|
import org.apache.hadoop.hbase.regionserver.StoreUtils;
|
||||||
|
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default algorithm for selecting files for compaction.
|
* The default algorithm for selecting files for compaction.
|
||||||
|
@ -61,7 +62,7 @@ public class RatioBasedCompactionPolicy extends SortedCompactionPolicy {
|
||||||
}
|
}
|
||||||
// TODO: Use better method for determining stamp of last major (HBASE-2990)
|
// TODO: Use better method for determining stamp of last major (HBASE-2990)
|
||||||
long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);
|
long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);
|
||||||
long now = System.currentTimeMillis();
|
long now = EnvironmentEdgeManager.currentTime();
|
||||||
if (lowTimestamp > 0L && lowTimestamp < (now - mcTime)) {
|
if (lowTimestamp > 0L && lowTimestamp < (now - mcTime)) {
|
||||||
// Major compaction time has elapsed.
|
// Major compaction time has elapsed.
|
||||||
long cfTTL = this.storeConfigInfo.getStoreFileTtl();
|
long cfTTL = this.storeConfigInfo.getStoreFileTtl();
|
||||||
|
|
|
@ -25,6 +25,8 @@ import org.apache.hadoop.hbase.HConstants;
|
||||||
import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
|
import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
|
||||||
import org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy;
|
import org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy;
|
||||||
import org.apache.hadoop.hbase.testclassification.SmallTests;
|
import org.apache.hadoop.hbase.testclassification.SmallTests;
|
||||||
|
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
||||||
|
import org.apache.hadoop.hbase.util.TimeOffsetEnvironmentEdge;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.experimental.categories.Category;
|
import org.junit.experimental.categories.Category;
|
||||||
|
@ -34,6 +36,8 @@ public class TestDefaultCompactSelection extends TestCompactionPolicy {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompactionRatio() throws IOException {
|
public void testCompactionRatio() throws IOException {
|
||||||
|
TimeOffsetEnvironmentEdge edge = new TimeOffsetEnvironmentEdge();
|
||||||
|
EnvironmentEdgeManager.injectEdge(edge);
|
||||||
/**
|
/**
|
||||||
* NOTE: these tests are specific to describe the implementation of the
|
* NOTE: these tests are specific to describe the implementation of the
|
||||||
* current compaction algorithm. Developed to ensure that refactoring
|
* current compaction algorithm. Developed to ensure that refactoring
|
||||||
|
@ -90,10 +94,17 @@ public class TestDefaultCompactSelection extends TestCompactionPolicy {
|
||||||
conf.setFloat("hbase.hregion.majorcompaction.jitter", 0);
|
conf.setFloat("hbase.hregion.majorcompaction.jitter", 0);
|
||||||
store.storeEngine.getCompactionPolicy().setConf(conf);
|
store.storeEngine.getCompactionPolicy().setConf(conf);
|
||||||
try {
|
try {
|
||||||
|
// The modTime of the mocked store file is currentTimeMillis, so we need to increase the
|
||||||
|
// timestamp a bit to make sure that now - lowestModTime is greater than major compaction
|
||||||
|
// period(1ms).
|
||||||
// trigger an aged major compaction
|
// trigger an aged major compaction
|
||||||
compactEquals(sfCreate(50,25,12,12), 50, 25, 12, 12);
|
List<StoreFile> candidates = sfCreate(50, 25, 12, 12);
|
||||||
|
edge.increment(2);
|
||||||
|
compactEquals(candidates, 50, 25, 12, 12);
|
||||||
// major sure exceeding maxCompactSize also downgrades aged minors
|
// 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);
|
||||||
|
edge.increment(2);
|
||||||
|
compactEquals(candidates, 23, 12, 12);
|
||||||
} finally {
|
} finally {
|
||||||
conf.setLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24);
|
conf.setLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24);
|
||||||
conf.setFloat("hbase.hregion.majorcompaction.jitter", 0.20F);
|
conf.setFloat("hbase.hregion.majorcompaction.jitter", 0.20F);
|
||||||
|
|
Loading…
Reference in New Issue