Skip to content

Commit f00753b

Browse files
huaxiangsunHuaxiang Sun
andauthored
HBASE-24073 [flakey test] client.TestAsyncRegionAdminApi messed up compaction state. (#1414)
Addendum: For major compaction test, set hbase.hstore.compaction.min to a big number to avoid kicking in minor compactions, which will pollute compaction state and sometimes, cause major compaction cannot happen. Co-authored-by: Huaxiang Sun <huaxiangsun@apache.com> Signed-off-by: stack <stack@apache.org>
1 parent 0b3918f commit f00753b

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.concurrent.ExecutionException;
3333
import java.util.concurrent.atomic.AtomicInteger;
3434
import java.util.stream.Collectors;
35+
import org.apache.hadoop.conf.Configuration;
3536
import org.apache.hadoop.hbase.HBaseClassTestRule;
3637
import org.apache.hadoop.hbase.ServerName;
3738
import org.apache.hadoop.hbase.TableName;
@@ -41,6 +42,7 @@
4142
import org.apache.hadoop.hbase.master.ServerManager;
4243
import org.apache.hadoop.hbase.master.assignment.AssignmentManager;
4344
import org.apache.hadoop.hbase.master.assignment.RegionStates;
45+
import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;
4446
import org.apache.hadoop.hbase.regionserver.HRegionServer;
4547
import org.apache.hadoop.hbase.regionserver.Region;
4648
import org.apache.hadoop.hbase.testclassification.ClientTests;
@@ -358,10 +360,25 @@ public void testCompactionSwitchStates() throws Exception {
358360

359361
@Test
360362
public void testCompact() throws Exception {
361-
compactionTest(TableName.valueOf("testCompact1"), 8, CompactionState.MAJOR, false);
362-
compactionTest(TableName.valueOf("testCompact2"), 15, CompactionState.MINOR, false);
363-
compactionTest(TableName.valueOf("testCompact3"), 8, CompactionState.MAJOR, true);
364-
compactionTest(TableName.valueOf("testCompact4"), 15, CompactionState.MINOR, true);
363+
compactionTest(TableName.valueOf("testCompact1"), 15, CompactionState.MINOR, false);
364+
compactionTest(TableName.valueOf("testCompact2"), 15, CompactionState.MINOR, true);
365+
366+
// For major compaction, set up a higher hbase.hstore.compaction.min to avoid
367+
// minor compactions. It is a hack to avoid random delays introduced by Admins's
368+
// updateConfiguration() method.
369+
TEST_UTIL.getMiniHBaseCluster().getRegionServerThreads().forEach(thread -> {
370+
Configuration conf = thread.getRegionServer().getConfiguration();
371+
conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY, 25);
372+
});
373+
374+
compactionTest(TableName.valueOf("testCompact3"), 8, CompactionState.MAJOR, false);
375+
compactionTest(TableName.valueOf("testCompact4"), 8, CompactionState.MAJOR, true);
376+
377+
// Restore to default
378+
TEST_UTIL.getMiniHBaseCluster().getRegionServerThreads().forEach(thread -> {
379+
Configuration conf = thread.getRegionServer().getConfiguration();
380+
conf.unset(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY);
381+
});
365382
}
366383

367384
private void compactionTest(final TableName tableName, final int flushes,

0 commit comments

Comments
 (0)