HBASE-14723 Fix IT tests split too many times

This commit is contained in:
Elliott Clark 2015-10-30 09:14:14 -07:00
parent f3af7b642c
commit 3578f643c7
1 changed files with 24 additions and 2 deletions

View File

@ -21,15 +21,28 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import java.io.IOException;
import java.util.concurrent.ThreadLocalRandom;
public class SplitAllRegionOfTableAction extends Action {
private static final int DEFAULT_MAX_SPLITS = 3;
private static final String MAX_SPLIT_KEY = "hbase.chaosmonkey.action.maxFullTableSplits";
private final TableName tableName;
private int maxFullTableSplits = DEFAULT_MAX_SPLITS;
private int splits = 0;
public SplitAllRegionOfTableAction(TableName tableName) {
this.tableName = tableName;
}
public void init(ActionContext context) throws IOException {
super.init(context);
this.maxFullTableSplits = getConf().getInt(MAX_SPLIT_KEY, DEFAULT_MAX_SPLITS);
}
@Override
public void perform() throws Exception {
HBaseTestingUtility util = context.getHBaseIntegrationTestingUtility();
@ -38,7 +51,16 @@ public class SplitAllRegionOfTableAction extends Action {
if (context.isStopping()) {
return;
}
// Don't always split. This should allow splitting of a full table later in the run
if (ThreadLocalRandom.current().nextDouble()
< (((double) splits) / ((double) maxFullTableSplits)) / ((double) 2)) {
splits++;
LOG.info("Performing action: Split all regions of " + tableName);
admin.split(tableName);
} else {
LOG.info("Skipping split of all regions.");
}
}
}