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