HBASE-18629 Enhance ChaosMonkeyRunner with interruptibility

This commit is contained in:
tedyu 2017-08-21 08:44:44 -07:00
parent 95e1fa30b0
commit 2e069df6bf
1 changed files with 24 additions and 2 deletions

View File

@ -52,6 +52,7 @@ public class ChaosMonkeyRunner extends AbstractHBaseTool {
protected boolean noClusterCleanUp = false;
private String tableName = "ChaosMonkeyRunner.tableName";
private String familyName = "ChaosMonkeyRunner.familyName";
private volatile boolean stop = false;
@Override
public void addOptions() {
@ -92,9 +93,14 @@ public class ChaosMonkeyRunner extends AbstractHBaseTool {
protected int doWork() throws Exception {
setUpCluster();
getAndStartMonkey();
while (true) {// loop here until got killed
while (!stop) {// loop here until got killed
Thread.sleep(10000);
}
return 0;
}
public void stopRunner() {
stop = true;
}
public void setUpCluster() throws Exception {
@ -151,10 +157,26 @@ public class ChaosMonkeyRunner extends AbstractHBaseTool {
return Sets.newHashSet(familyName);
}
/*
* If caller wants to add config parameters contained in a file, the path of conf file
* can be passed as the first two arguments like this:
* -c <path-to-conf>
*/
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
String[] actualArgs = args;
if (args.length > 0 && "-c".equals(args[0])) {
int argCount = args.length - 2;
if (argCount < 0) {
throw new IllegalArgumentException("Missing path for -c parameter");
}
// load the resource specified by the second parameter
conf.addResource(args[1]);
actualArgs = new String[argCount];
System.arraycopy(args, 2, actualArgs, 0, argCount);
}
IntegrationTestingUtility.setUseDistributedCluster(conf);
int ret = ToolRunner.run(conf, new ChaosMonkeyRunner(), args);
int ret = ToolRunner.run(conf, new ChaosMonkeyRunner(), actualArgs);
System.exit(ret);
}