[ 
https://issues.apache.org/jira/browse/HADOOP-18609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17682499#comment-17682499
 ] 

Masatake Iwasaki commented on HADOOP-18609:
-------------------------------------------

{noformat}
$ mvn clean install -DskipTests -DskipShade -Pdocs
$ git diff
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 fef8c4b7e4b..7b21cc302d1 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
@@ -42,6 +42,18 @@
   @InterfaceAudience.Private
   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);
+
   /**
    * Register a metrics source
    * @param <T>   the actual type of the source object
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 6c5a71a708f..beb72e42723 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
@@ -293,6 +293,31 @@ T register(final String name, final String description, 
final T sink) {
     return sink;
   }

+  @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)) {
+      if(sinks.get(name) == null) {
+        registerSink(name, description, sink);
+      } else {
+        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);
{noformat}

> Fix source code modification after building with docs profile
> -------------------------------------------------------------
>
>                 Key: HADOOP-18609
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18609
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Masatake Iwasaki
>            Assignee: Masatake Iwasaki
>            Priority: Major
>
> MetricsSystem.java and MetricsSystemImpl.java are automatically modified by 
> building with {{-Pdocs}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to