[
https://issues.apache.org/jira/browse/HADOOP-18815?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ConfX updated HADOOP-18815:
---------------------------
Affects Version/s: 3.3.3
> unnecessary NullPointerException encountered when starting HttpServer2 with
> prometheus enabled
> -----------------------------------------------------------------------------------------------
>
> Key: HADOOP-18815
> URL: https://issues.apache.org/jira/browse/HADOOP-18815
> Project: Hadoop Common
> Issue Type: Bug
> Affects Versions: 3.3.3
> Reporter: ConfX
> Priority: Critical
> Attachments: reproduce.sh
>
>
> h2. What happened?
> Attempt to start an {{HttpServer2}} failed due to an NPE thrown in
> {{{}MetricsSystemImpl{}}}.
> h2. Where's the bug?
> In line 1278 of {{{}HttpServer2{}}}, if the support for prometheus is enabled
> the server registers a prometheus sink:
> {noformat}
> if (prometheusSupport) {
> DefaultMetricsSystem.instance()
> .register("prometheus", "Hadoop metrics prometheus exporter",
> prometheusMetricsSink);
> }{noformat}
> However, a problem is that if the MetricsSystemImpl returned by the
> DefaultMetricsSystem.instance has not been start nor init, the config of the
> metric system would be set to null, thus failing the nullity check at the
> start of MetricsSystemImpl.registerSink. A better way of handling this would
> be to check in advance if the metric system has been initialized and
> initialize it if it has not been initialized.How to reproduce?(1) set
> hadoop.prometheus.endpoint.enabled to true (2) run
> org.apache.hadoop.http.TestHttpServer#testHttpResonseContainsDenyStacktrace
> {noformat}
> java.io.IOException: Problem starting http server
> ...
> Caused by: java.lang.NullPointerException: config
> at
> org.apache.hadoop.thirdparty.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:899)
> at
> org.apache.hadoop.metrics2.impl.MetricsSystemImpl.registerSink(MetricsSystemImpl.java:298)
> at
> org.apache.hadoop.metrics2.impl.MetricsSystemImpl.register(MetricsSystemImpl.java:277)
> at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:1279)
> ... 34 more{noformat}
> For an easy reproduction, run the reproduce.sh in the attachment.
> We are happy to provide a patch if this issue is confirmed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]