11diff --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
2- index a277abd..ed7c709 100644
2+ index a277abd6e13..1d131d5db6e 100644
33--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java
44+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsSystem.java
5- @@ -43,18 +43,6 @@
5+ @@ -42,18 +42,6 @@
6+ @InterfaceAudience.Private
67 public abstract MetricsSystem init(String prefix);
78
8- /**
9+ - /**
910- * Register a metrics source
1011- * @param <T> the actual type of the source object
1112- * @param source object to register
@@ -17,15 +18,11 @@ index a277abd..ed7c709 100644
1718- */
1819- public abstract <T> T register(String name, String desc, T source);
1920-
20- - /**
21+ /**
2122 * Unregister a metrics source
2223 * @param name of the source. This is the name you use to call register()
23- */
24- @@ -77,18 +65,19 @@
25- */
26- @InterfaceAudience.Private
24+ @@ -79,16 +67,16 @@
2725 public abstract MetricsSource getSource(String name);
28- +
2926
3027 /**
3128- * Register a metrics sink
@@ -50,18 +47,22 @@ index a277abd..ed7c709 100644
5047 /**
5148 * Register a callback interface for JMX events
5249diff --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
53- index 6986edb..eeea81f 100644
50+ index a6edf08e5a7..5b87be1ec67 100644
5451--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
5552+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
56- @@ -270,27 +270 ,6 @@ void registerSource(String name, String desc, MetricsSource source) {
53+ @@ -269,31 +269 ,6 @@ void registerSource(String name, String desc, MetricsSource source) {
5754 LOG.debug("Registered source "+ name);
5855 }
5956
6057- @Override public synchronized <T extends MetricsSink>
6158- T register(final String name, final String description, final T sink) {
6259- LOG.debug(name +", "+ description);
6360- if (allSinks.containsKey(name)) {
64- - LOG.warn("Sink "+ name +" already exists!");
61+ - if(sinks.get(name) == null) {
62+ - registerSink(name, description, sink);
63+ - } else {
64+ - LOG.warn("Sink "+ name +" already exists!");
65+ - }
6566- return sink;
6667- }
6768- allSinks.put(name, sink);
@@ -82,10 +83,10 @@ index 6986edb..eeea81f 100644
8283 checkNotNull(config, "config");
8384 MetricsConfig conf = sinkConfigs.get(name);
8485diff --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
85- index c19d238..f8412f1 100644
86+ index 7bc772f062a..f012c877d18 100644
8687--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java
8788+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestGangliaMetrics.java
88- @@ -130 ,8 +130 ,8 @@ public void testTagsForPrefix() throws Exception {
89+ @@ -139 ,8 +139 ,8 @@ public void testTagsForPrefix() throws Exception {
8990 GangliaMetricsTestHelper.setDatagramSocket(gsink31, mockds31);
9091
9192 // register the sinks
0 commit comments