[
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]