This is an automated email from the ASF dual-hosted git repository.

huijun pushed a commit to branch huijunw/healthmgrmetrics
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git


The following commit(s) were added to refs/heads/huijunw/healthmgrmetrics by 
this push:
     new 6367bdf  replace singleton with guice singleton
6367bdf is described below

commit 6367bdf1a70e6bd1d2048ead5dab8428eb6f684d
Author: Huijun Wu <huij...@twitter.com>
AuthorDate: Thu Apr 12 04:02:54 2018 -0700

    replace singleton with guice singleton
---
 .../org/apache/heron/healthmgr/HealthManager.java   | 21 +++++++++++++--------
 .../heron/healthmgr/HealthManagerMetrics.java       |  2 ++
 .../healthmgr/detectors/BackPressureDetector.java   |  9 ++++++++-
 .../healthmgr/diagnosers/SlowInstanceDiagnoser.java | 14 +++++++++++---
 .../resolvers/RestartContainerResolver.java         | 11 ++++++-----
 .../apache/heron/healthmgr/HealthManagerTest.java   |  2 +-
 6 files changed, 41 insertions(+), 18 deletions(-)

diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManager.java 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManager.java
index 144d0cc..eb422f7 100644
--- a/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManager.java
+++ b/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManager.java
@@ -214,22 +214,24 @@ public class HealthManager {
     String metricsUrl = 
config.getStringValue(PolicyConfigKey.METRIC_SOURCE_URL.key());
     metricsUrl = getOptionValue(cmd, CliArgs.METRIC_SOURCE_URL, metricsUrl);
 
-    AbstractModule module = buildMetricsProviderModule(metricsUrl, 
metricSourceClassName);
+    // metrics reporting thread
+    HealthManagerMetrics publishingMetricsRunnable =
+        new HealthManagerMetrics(Integer.valueOf(getOptionValue(cmd, 
CliArgs.METRICSMGR_PORT)));
+
+    AbstractModule module
+        = buildBaseModule(metricsUrl, metricSourceClassName, 
publishingMetricsRunnable);
     HealthManager healthManager = new HealthManager(config, module);
 
     LOG.info("Initializing health manager");
     healthManager.initialize();
 
-    LOG.info("Starting Health Manager metric posting thread");
-    HealthManagerMetrics publishingMetricsRunnable =
-        new HealthManagerMetrics(Integer.valueOf(getOptionValue(cmd, 
CliArgs.METRICSMGR_PORT)));
-    
SingletonRegistry.INSTANCE.registerSingleton(HealthManagerMetrics.METRICS_THREAD,
-        publishingMetricsRunnable);
-
     LOG.info("Starting Health Manager");
     PoliciesExecutor policyExecutor = new 
PoliciesExecutor(healthManager.healthPolicies);
     ScheduledFuture<?> future = policyExecutor.start();
+
+    LOG.info("Starting Health Manager metric posting thread");
     new Thread(publishingMetricsRunnable).start();
+
     try {
       future.get();
     } finally {
@@ -324,7 +326,8 @@ public class HealthManager {
   }
 
   @VisibleForTesting
-  static AbstractModule buildMetricsProviderModule(final String sourceUrl, 
final String type) {
+  static AbstractModule buildBaseModule(final String sourceUrl, final String 
type,
+                                        final HealthManagerMetrics 
publishingMetricsRunnable) {
     return new AbstractModule() {
       @Override
       protected void configure() {
@@ -334,6 +337,8 @@ public class HealthManager {
         bind(String.class)
             .annotatedWith(Names.named(CONF_METRICS_SOURCE_TYPE))
             .toInstance(type);
+        bind(HealthManagerMetrics.class)
+            .toInstance(publishingMetricsRunnable);
       }
     };
   }
diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManagerMetrics.java 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManagerMetrics.java
index 11cd891..1989fec45 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManagerMetrics.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/HealthManagerMetrics.java
@@ -23,6 +23,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
+import javax.inject.Singleton;
 
 import com.google.protobuf.Message;
 
@@ -40,6 +41,7 @@ import org.apache.heron.proto.system.Metrics;
 /**
  * HealthMgr's metrics to be collect
  */
+@Singleton
 public class HealthManagerMetrics implements Runnable, AutoCloseable {
   public static final String METRICS_THREAD = "HealthManagerMetrics";
   private static final Logger LOG = 
Logger.getLogger(HealthManagerMetrics.class.getName());
diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/detectors/BackPressureDetector.java
 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/detectors/BackPressureDetector.java
index 5fe0824..d9cc7b3 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/detectors/BackPressureDetector.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/detectors/BackPressureDetector.java
@@ -28,6 +28,7 @@ import com.microsoft.dhalion.core.Measurement;
 import com.microsoft.dhalion.core.MeasurementsTable;
 import com.microsoft.dhalion.core.Symptom;
 
+import org.apache.heron.healthmgr.HealthManagerMetrics;
 import org.apache.heron.healthmgr.HealthPolicyConfig;
 
 import static 
org.apache.heron.healthmgr.detectors.BaseDetector.SymptomType.SYMPTOM_COMP_BACK_PRESSURE;
@@ -35,14 +36,18 @@ import static 
org.apache.heron.healthmgr.detectors.BaseDetector.SymptomType.SYMP
 import static 
org.apache.heron.healthmgr.sensors.BaseSensor.MetricName.METRIC_BACK_PRESSURE;
 
 public class BackPressureDetector extends BaseDetector {
+  public static final String BACK_PRESSURE_DETECTOR = "BackPressureDetector";
   static final String CONF_NOISE_FILTER = 
"BackPressureDetector.noiseFilterMillis";
 
   private static final Logger LOG = 
Logger.getLogger(BackPressureDetector.class.getName());
   private final int noiseFilterMillis;
+  private HealthManagerMetrics publishingMetricsRunnable;
 
   @Inject
-  BackPressureDetector(HealthPolicyConfig policyConfig) {
+  BackPressureDetector(HealthPolicyConfig policyConfig,
+                       HealthManagerMetrics publishingMetricsRunnable) {
     noiseFilterMillis = (int) policyConfig.getConfig(CONF_NOISE_FILTER, 20);
+    this.publishingMetricsRunnable = publishingMetricsRunnable;
   }
 
   /**
@@ -53,6 +58,8 @@ public class BackPressureDetector extends BaseDetector {
    */
   @Override
   public Collection<Symptom> detect(Collection<Measurement> measurements) {
+    publishingMetricsRunnable.executeDetectorIncr(BACK_PRESSURE_DETECTOR);
+
     Collection<Symptom> result = new ArrayList<>();
     Instant now = context.checkpoint();
 
diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/diagnosers/SlowInstanceDiagnoser.java
 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/diagnosers/SlowInstanceDiagnoser.java
index 40aa417..df87c3d 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/diagnosers/SlowInstanceDiagnoser.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/diagnosers/SlowInstanceDiagnoser.java
@@ -19,6 +19,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.logging.Logger;
 
+import javax.inject.Inject;
+
 import com.microsoft.dhalion.core.Diagnosis;
 import com.microsoft.dhalion.core.MeasurementsTable;
 import com.microsoft.dhalion.core.Symptom;
@@ -37,11 +39,17 @@ public class SlowInstanceDiagnoser extends BaseDiagnoser {
   public static final String SLOW_INSTANCE_DIAGNOSER = "SlowInstanceDiagnoser";
   private static final Logger LOG = 
Logger.getLogger(SlowInstanceDiagnoser.class.getName());
 
+  private HealthManagerMetrics publishingMetricsRunnable;
+
+  @Inject
+  public SlowInstanceDiagnoser(HealthManagerMetrics publishingMetricsRunnable) 
{
+    this.publishingMetricsRunnable = publishingMetricsRunnable;
+  }
+
   @Override
   public Collection<Diagnosis> diagnose(Collection<Symptom> symptoms) {
-    ((HealthManagerMetrics) SingletonRegistry.INSTANCE
-        .getSingleton(HealthManagerMetrics.METRICS_THREAD))
-        .executeDiagnoserIncr(SLOW_INSTANCE_DIAGNOSER);
+    publishingMetricsRunnable.executeDiagnoserIncr(SLOW_INSTANCE_DIAGNOSER);
+
     Collection<Diagnosis> diagnoses = new ArrayList<>();
     SymptomsTable symptomsTable = SymptomsTable.of(symptoms);
 
diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/resolvers/RestartContainerResolver.java
 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/resolvers/RestartContainerResolver.java
index a1354c5..cdbb85e 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/resolvers/RestartContainerResolver.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/resolvers/RestartContainerResolver.java
@@ -47,14 +47,17 @@ public class RestartContainerResolver implements IResolver {
   private final String topologyName;
   private final ISchedulerClient schedulerClient;
   private ExecutionContext context;
+  private HealthManagerMetrics publishingMetricsRunnable;
 
   @Inject
   public RestartContainerResolver(@Named(CONF_TOPOLOGY_NAME) String 
topologyName,
                                   EventManager eventManager,
-                                  ISchedulerClient schedulerClient) {
+                                  ISchedulerClient schedulerClient,
+                                  HealthManagerMetrics 
publishingMetricsRunnable) {
     this.topologyName = topologyName;
     this.eventManager = eventManager;
     this.schedulerClient = schedulerClient;
+    this.publishingMetricsRunnable = publishingMetricsRunnable;
   }
 
   @Override
@@ -64,9 +67,7 @@ public class RestartContainerResolver implements IResolver {
 
   @Override
   public Collection<Action> resolve(Collection<Diagnosis> diagnosis) {
-    HealthManagerMetrics hmm = (HealthManagerMetrics) 
SingletonRegistry.INSTANCE
-        .getSingleton(HealthManagerMetrics.METRICS_THREAD);
-    hmm.executeResolver(RESTART_CONTAINER_RESOLVER);
+    publishingMetricsRunnable.executeResolver(RESTART_CONTAINER_RESOLVER);
 
     List<Action> actions = new ArrayList<>();
 
@@ -104,7 +105,7 @@ public class RestartContainerResolver implements IResolver {
               .setTopologyName(topologyName)
               .build());
       LOG.info("Restarted container result: " + b);
-      hmm.executeIncr("RestartContainer");
+      publishingMetricsRunnable.executeIncr("RestartContainer");
     });
 
     LOG.info("Broadcasting container restart event");
diff --git 
a/heron/healthmgr/tests/java/org/apache/heron/healthmgr/HealthManagerTest.java 
b/heron/healthmgr/tests/java/org/apache/heron/healthmgr/HealthManagerTest.java
index 2fa1e7e..3711e6c 100644
--- 
a/heron/healthmgr/tests/java/org/apache/heron/healthmgr/HealthManagerTest.java
+++ 
b/heron/healthmgr/tests/java/org/apache/heron/healthmgr/HealthManagerTest.java
@@ -64,7 +64,7 @@ public class HealthManagerTest {
     
when(adaptor.getSchedulerLocation(anyString())).thenReturn(schedulerLocation);
 
     AbstractModule baseModule = HealthManager
-        .buildMetricsProviderModule("127.0.0.1", 
TrackerMetricsProvider.class.getName());
+        .buildBaseModule("127.0.0.1", TrackerMetricsProvider.class.getName());
 
     HealthManager healthManager = new HealthManager(config, baseModule);
 

-- 
To stop receiving notification emails like this one, please contact
hui...@apache.org.

Reply via email to