azkaban-aplcache

Guicing ExecMetrics and fixing related ImmutableEnumChecker

6/12/2017 2:32:25 PM

Details

diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
index e34081a..09b596c 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
@@ -86,6 +86,7 @@ public class AzkabanExecutorServer {
 
   private static AzkabanExecutorServer app;
 
+  private final ExecMetrics execMetrics;
   private final ExecutorLoader executionLoader;
   private final FlowRunnerManager runnerManager;
   private final MetricsManager metricsManager;
@@ -98,11 +99,13 @@ public class AzkabanExecutorServer {
   @Inject
   public AzkabanExecutorServer(final Props props,
       final ExecutorLoader executionLoader,
-      final FlowRunnerManager runnerManager, final MetricsManager metricsManager) throws Exception {
+      final FlowRunnerManager runnerManager, final MetricsManager metricsManager,
+      final ExecMetrics execMetrics) throws Exception {
     this.props = props;
     this.executionLoader = executionLoader;
     this.runnerManager = runnerManager;
     this.metricsManager = metricsManager;
+    this.execMetrics = execMetrics;
 
     this.server = createJettyServer(props);
 
@@ -273,7 +276,7 @@ public class AzkabanExecutorServer {
   }
 
   private void startExecMetrics() throws Exception {
-    ExecMetrics.INSTANCE.addFlowRunnerManagerMetrics(getFlowRunnerManager());
+    this.execMetrics.addFlowRunnerManagerMetrics(getFlowRunnerManager());
 
     logger.info("starting reporting Executor Metrics");
     this.metricsManager.startReporting("AZ-EXEC", this.props);
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/ExecMetrics.java b/azkaban-exec-server/src/main/java/azkaban/execapp/ExecMetrics.java
index 5fffaf9..d6b0ec0 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/ExecMetrics.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/ExecMetrics.java
@@ -16,23 +16,22 @@
 
 package azkaban.execapp;
 
-import static azkaban.ServiceProvider.SERVICE_PROVIDER;
-
-import azkaban.metrics.MetricsManager;
 import azkaban.metrics.MetricsUtility;
 import com.codahale.metrics.MetricRegistry;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 /**
  * This class ExecMetrics is in charge of collecting metrics from executors.
  */
-public enum ExecMetrics {
-  INSTANCE;
+@Singleton
+public class ExecMetrics {
 
   private final MetricRegistry registry;
 
-  ExecMetrics() {
-    // TODO: reallocf make guicy
-    this.registry = SERVICE_PROVIDER.getInstance(MetricRegistry.class);
+  @Inject
+  ExecMetrics(final MetricRegistry registry) {
+    this.registry = registry;
     setupStaticMetrics();
   }