accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From els...@apache.org
Subject [23/51] [abbrv] git commit: ACCUMULO-378 Allow for dynamic reconfiguration of the WorkAssigner impl
Date Sat, 14 Jun 2014 04:55:23 GMT
ACCUMULO-378 Allow for dynamic reconfiguration of the WorkAssigner impl


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

Branch: refs/heads/master
Commit: db10cfe26823f5a31b516070521f54e5b890fb7b
Parents: 58fbf14
Author: Josh Elser <elserj@apache.org>
Authored: Wed May 28 16:55:39 2014 -0400
Committer: Josh Elser <elserj@apache.org>
Committed: Wed May 28 16:55:39 2014 -0400

----------------------------------------------------------------------
 .../accumulo/master/replication/WorkDriver.java | 33 +++++++++++++-------
 1 file changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/db10cfe2/server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
b/server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
index 00b0480..8c3e3e3 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/replication/WorkDriver.java
@@ -44,20 +44,28 @@ public class WorkDriver extends Daemon {
     this.master = master;
     this.conn = conn;
     this.conf = master.getConfiguration().getConfiguration();
+    configureWorkAssigner();
+  }
 
+  protected void configureWorkAssigner() {
     String workAssignerClass = conf.get(Property.REPLICATION_WORK_ASSIGNER);
-    try {
-      Class<?> clz = Class.forName(workAssignerClass);
-      Class<? extends WorkAssigner> workAssignerClz = clz.asSubclass(WorkAssigner.class);
-      this.assigner = workAssignerClz.newInstance();
-    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e)
{
-      log.error("Could not instantiate configured work assigner {}", workAssignerClass, e);
-      throw new RuntimeException(e);
-    }
 
-    this.assigner.configure(conf, conn);
-    this.assignerImplName = assigner.getClass().getName();
-    this.setName(assigner.getName());
+    if (null == assigner || !assigner.getClass().getName().equals(workAssignerClass)) {
+      log.info("Initializing work assigner implementation of {}", workAssignerClass);
+
+      try {
+        Class<?> clz = Class.forName(workAssignerClass);
+        Class<? extends WorkAssigner> workAssignerClz = clz.asSubclass(WorkAssigner.class);
+        this.assigner = workAssignerClz.newInstance();
+      } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e)
{
+        log.error("Could not instantiate configured work assigner {}", workAssignerClass,
e);
+        throw new RuntimeException(e);
+      }
+  
+      this.assigner.configure(conf, conn);
+      this.assignerImplName = assigner.getClass().getName();
+      this.setName(assigner.getName());
+    }
   }
 
   /*
@@ -90,6 +98,9 @@ public class WorkDriver extends Daemon {
       long sleepTime = conf.getTimeInMillis(Property.REPLICATION_WORK_ASSIGNMENT_SLEEP);
       log.debug("Sleeping {} ms before next work assignment", sleepTime);
       UtilWaitThread.sleep(sleepTime);
+
+      // After each loop, make sure that the WorkAssigner implementation didn't change
+      configureWorkAssigner();
     }
   }
 }


Mime
View raw message