You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by sr...@apache.org on 2018/08/06 16:10:48 UTC

[1/2] storm git commit: STORM-3157: Improve StormMetricsRegistry in general

Repository: storm
Updated Branches:
  refs/heads/master 4bc28e7e8 -> 73382d9ec


STORM-3157: Improve StormMetricsRegistry in general


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

Branch: refs/heads/master
Commit: 88ba5f6cb042bd6bb7f499ea7f95749b2a3f96e7
Parents: 4bc28e7
Author: Zhengdai Hu <hu...@gmail.com>
Authored: Fri Jul 20 13:41:51 2018 -0500
Committer: Zhengdai Hu <hu...@gmail.com>
Committed: Mon Aug 6 10:50:53 2018 -0500

----------------------------------------------------------------------
 .../storm/metric/StormMetricsRegistry.java      | 57 +++++++++++++-------
 .../org/apache/storm/pacemaker/Pacemaker.java   |  4 +-
 2 files changed, 40 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/88ba5f6c/storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java
----------------------------------------------------------------------
diff --git a/storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java b/storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java
index 2ba832b..679c6d3 100644
--- a/storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java
+++ b/storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java
@@ -12,6 +12,7 @@
 
 package org.apache.storm.metric;
 
+import com.codahale.metrics.ExponentiallyDecayingReservoir;
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Histogram;
 import com.codahale.metrics.Meter;
@@ -25,44 +26,64 @@ import org.apache.storm.daemon.metrics.reporters.PreparableReporter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@SuppressWarnings("unchecked")
-public class StormMetricsRegistry {
-    private static final MetricRegistry DEFAULT_REGISTRY = new MetricRegistry();
+public class StormMetricsRegistry extends MetricRegistry {
+    private static final StormMetricsRegistry REGISTRY = new StormMetricsRegistry();
     private static final Logger LOG = LoggerFactory.getLogger(StormMetricsRegistry.class);
 
-    public static Meter registerMeter(final String name) {
-        return register(name, new Meter());
-    }
+    private StormMetricsRegistry() {/*Singleton pattern*/}
 
     public static <V> Gauge<V> registerGauge(final String name, final Gauge<V> gauge) {
-        return register(name, gauge);
+        return REGISTRY.register(name, gauge);
+    }
+
+    public static Histogram registerHistogram(String name) {
+        return registerHistogram(name, new ExponentiallyDecayingReservoir());
     }
 
     public static Histogram registerHistogram(String name, Reservoir reservoir) {
-        return register(name, new Histogram(reservoir));
+        return REGISTRY.register(name, new Histogram(reservoir));
+    }
+
+    public static Meter registerMeter(String name) {
+        return REGISTRY.register(name, new Meter());
     }
 
+    /**
+     * Start metrics reporters for the registry singleton.
+     *
+     * @param topoConf config that specifies reporter plugin
+     */
     public static void startMetricsReporters(Map<String, Object> topoConf) {
         for (PreparableReporter reporter : MetricsUtils.getPreparableReporters(topoConf)) {
-            reporter.prepare(StormMetricsRegistry.DEFAULT_REGISTRY, topoConf);
+            reporter.prepare(StormMetricsRegistry.REGISTRY, topoConf);
             reporter.start();
             LOG.info("Started statistics report plugin...");
         }
     }
 
-    private static <T extends Metric> T register(final String name, T metric) {
-        T ret;
+    /**
+     * Override parent method to swallow exceptions for double registration, including MetricSet registration
+     * This is more similar to super#getOrAdd than super#register.
+     * Notice that this method is only accessible to the private singleton, hence private to client code.
+     *
+     * @param name name of the metric
+     * @param metric metric to be registered
+     * @param <T> type of metric
+     * @return metric just registered or existing metric, if double registration occurs.
+     * @throws IllegalArgumentException name already exist with a different kind of metric
+     */
+    @Override
+    public <T extends Metric> T register(final String name, T metric) throws IllegalArgumentException {
         try {
-            ret = DEFAULT_REGISTRY.register(name, metric);
+            return super.register(name, metric);
         } catch (IllegalArgumentException e) {
-            // swallow IllegalArgumentException when the metric exists already
-            ret = (T) DEFAULT_REGISTRY.getMetrics().get(name);
-            if (ret == null) {
-                throw e;
-            } else {
+            @SuppressWarnings("unchecked")
+            final T existing = (T) REGISTRY.getMetrics().get(name);
+            if (metric.getClass().isInstance(existing)) {
                 LOG.warn("Metric {} has already been registered", name);
+                return existing;
             }
+            throw e;
         }
-        return ret;
     }
 }

http://git-wip-us.apache.org/repos/asf/storm/blob/88ba5f6c/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
----------------------------------------------------------------------
diff --git a/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java b/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
index 3efb47c..a5b98de 100644
--- a/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
+++ b/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
@@ -12,7 +12,6 @@
 
 package org.apache.storm.pacemaker;
 
-import com.codahale.metrics.ExponentiallyDecayingReservoir;
 import com.codahale.metrics.Histogram;
 import com.codahale.metrics.Meter;
 import java.util.ArrayList;
@@ -41,8 +40,7 @@ public class Pacemaker implements IServerMessageHandler {
     private final static Meter meterTotalReceivedSize = StormMetricsRegistry.registerMeter("pacemaker:total-receive-size");
     private final static Meter meterGetPulseCount = StormMetricsRegistry.registerMeter("pacemaker:get-pulse=count");
     private final static Meter meterTotalSentSize = StormMetricsRegistry.registerMeter("pacemaker:total-sent-size");
-    private final static Histogram histogramHeartbeatSize =
-        StormMetricsRegistry.registerHistogram("pacemaker:heartbeat-size", new ExponentiallyDecayingReservoir());
+    private final static Histogram histogramHeartbeatSize = StormMetricsRegistry.registerHistogram("pacemaker:heartbeat-size");
     private final Map<String, byte[]> heartbeats;
     private final Map<String, Object> conf;
 


[2/2] storm git commit: Merge branch 'STORM-3157' of https://github.com/zd-project/storm into STORM-3157-merge

Posted by sr...@apache.org.
Merge branch 'STORM-3157' of https://github.com/zd-project/storm into STORM-3157-merge


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

Branch: refs/heads/master
Commit: 73382d9ecee7dc193070ec136b34ea9ac568b20d
Parents: 4bc28e7 88ba5f6
Author: Stig Rohde Døssing <sr...@apache.org>
Authored: Mon Aug 6 18:06:40 2018 +0200
Committer: Stig Rohde Døssing <sr...@apache.org>
Committed: Mon Aug 6 18:06:40 2018 +0200

----------------------------------------------------------------------
 .../storm/metric/StormMetricsRegistry.java      | 57 +++++++++++++-------
 .../org/apache/storm/pacemaker/Pacemaker.java   |  4 +-
 2 files changed, 40 insertions(+), 21 deletions(-)
----------------------------------------------------------------------