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();
}