Repository: hbase
Updated Branches:
  refs/heads/branch-2 95e1fa30b -> 2e069df6b


HBASE-18629 Enhance ChaosMonkeyRunner with interruptibility


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/2e069df6
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/2e069df6
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/2e069df6

Branch: refs/heads/branch-2
Commit: 2e069df6bf581dd97f6543f7cb563f0298599527
Parents: 95e1fa3
Author: tedyu <yuzhih...@gmail.com>
Authored: Mon Aug 21 08:44:44 2017 -0700
Committer: tedyu <yuzhih...@gmail.com>
Committed: Mon Aug 21 08:44:44 2017 -0700

----------------------------------------------------------------------
 .../hbase/chaos/util/ChaosMonkeyRunner.java     | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2e069df6/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/util/ChaosMonkeyRunner.java
----------------------------------------------------------------------
diff --git 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/util/ChaosMonkeyRunner.java
 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/util/ChaosMonkeyRunner.java
index 82c51ad..f142321 100644
--- 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/util/ChaosMonkeyRunner.java
+++ 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/util/ChaosMonkeyRunner.java
@@ -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);
   }
 

Reply via email to