|
@@ -0,0 +1,98 @@
|
|
|
|
+diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java
|
|
|
|
+index a277abd..ed7c709 100644
|
|
|
|
+--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java
|
|
|
|
++++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java
|
|
|
|
+@@ -43,18 +43,6 @@
|
|
|
|
+ public abstract MetricsSystem init(String prefix);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+- * Register a metrics source
|
|
|
|
+- * @param <T> the actual type of the source object
|
|
|
|
+- * @param source object to register
|
|
|
|
+- * @param name of the source. Must be unique or null (then extracted from
|
|
|
|
+- * the annotations of the source object.)
|
|
|
|
+- * @param desc the description of the source (or null. See above.)
|
|
|
|
+- * @return the source object
|
|
|
|
+- * @exception MetricsException
|
|
|
|
+- */
|
|
|
|
+- public abstract <T> T register(String name, String desc, T source);
|
|
|
|
+-
|
|
|
|
+- /**
|
|
|
|
+ * Unregister a metrics source
|
|
|
|
+ * @param name of the source. This is the name you use to call register()
|
|
|
|
+ */
|
|
|
|
+@@ -77,18 +65,19 @@
|
|
|
|
+ */
|
|
|
|
+ @InterfaceAudience.Private
|
|
|
|
+ public abstract MetricsSource getSource(String name);
|
|
|
|
++
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+- * Register a metrics sink
|
|
|
|
+- * @param <T> the type of the sink
|
|
|
|
+- * @param sink to register
|
|
|
|
+- * @param name of the sink. Must be unique.
|
|
|
|
+- * @param desc the description of the sink
|
|
|
|
+- * @return the sink
|
|
|
|
++ * Register a metrics source
|
|
|
|
++ * @param <T> the actual type of the source object
|
|
|
|
++ * @param source object to register
|
|
|
|
++ * @param name of the source. Must be unique or null (then extracted from
|
|
|
|
++ * the annotations of the source object.)
|
|
|
|
++ * @param desc the description of the source (or null. See above.)
|
|
|
|
++ * @return the source object
|
|
|
|
+ * @exception MetricsException
|
|
|
|
+ */
|
|
|
|
+- public abstract <T extends MetricsSink>
|
|
|
|
+- T register(String name, String desc, T sink);
|
|
|
|
++ public abstract <T> T register(String name, String desc, T source);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Register a callback interface for JMX events
|
|
|
|
+diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
|
|
|
|
+index 6986edb..eeea81f 100644
|
|
|
|
+--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
|
|
|
|
++++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
|
|
|
|
+@@ -270,27 +270,6 @@ void registerSource(String name, String desc, MetricsSource source) {
|
|
|
|
+ LOG.debug("Registered source "+ name);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+- @Override public synchronized <T extends MetricsSink>
|
|
|
|
+- T register(final String name, final String description, final T sink) {
|
|
|
|
+- LOG.debug(name +", "+ description);
|
|
|
|
+- if (allSinks.containsKey(name)) {
|
|
|
|
+- LOG.warn("Sink "+ name +" already exists!");
|
|
|
|
+- return sink;
|
|
|
|
+- }
|
|
|
|
+- allSinks.put(name, sink);
|
|
|
|
+- if (config != null) {
|
|
|
|
+- registerSink(name, description, sink);
|
|
|
|
+- }
|
|
|
|
+- // We want to re-register the sink to pick up new config
|
|
|
|
+- // when the metrics system restarts.
|
|
|
|
+- register(name, new AbstractCallback() {
|
|
|
|
+- @Override public void postStart() {
|
|
|
|
+- register(name, description, sink);
|
|
|
|
+- }
|
|
|
|
+- });
|
|
|
|
+- return sink;
|
|
|
|
+- }
|
|
|
|
+-
|
|
|
|
+ synchronized void registerSink(String name, String desc, MetricsSink sink) {
|
|
|
|
+ checkNotNull(config, "config");
|
|
|
|
+ MetricsConfig conf = sinkConfigs.get(name);
|
|
|
|
+diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java
|
|
|
|
+index c19d238..f8412f1 100644
|
|
|
|
+--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java
|
|
|
|
++++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java
|
|
|
|
+@@ -130,8 +130,8 @@ public void testTagsForPrefix() throws Exception {
|
|
|
|
+ GangliaMetricsTestHelper.setDatagramSocket(gsink31, mockds31);
|
|
|
|
+
|
|
|
|
+ // register the sinks
|
|
|
|
+- ms.register("gsink30", "gsink30 desc", gsink30);
|
|
|
|
+- ms.register("gsink31", "gsink31 desc", gsink31);
|
|
|
|
++ //ms.register("gsink30", "gsink30 desc", gsink30);
|
|
|
|
++ //ms.register("gsink31", "gsink31 desc", gsink31);
|
|
|
|
+ ms.publishMetricsNow(); // publish the metrics
|
|
|
|
+
|
|
|
|
+ ms.stop();
|