Robert Munteanu created SLING-12013:
---------------------------------------
Summary: Commons Threads export invalid 'Pid' attribute as gauge
Key: SLING-12013
URL: https://issues.apache.org/jira/browse/SLING-12013
Project: Sling
Issue Type: Bug
Components: Commons
Reporter: Robert Munteanu
Assignee: Robert Munteanu
Fix For: Commons Threads 3.3.0
The commons.thread bundle exports its JMX attributes as Gauges via the
[ThreadPoolMetricGauges
class](https://github.com/apache/sling-org-apache-sling-commons-threads/blob/master/src/main/java/org/apache/sling/commons/threads/impl/ThreadPoolMetricsGauges.java).
In particular, it also exports the 'Pid' attribute.
This attribute does not make sense as a Gauge value ( it's a static,
non-numeric, value ) and when exported ends up null.
When used with the [prometheus bundle from the
whiteboard](https://github.com/apache/sling-whiteboard/tree/master/metrics-prometheus)
it breaks the Prometheus metric servlet, causing no metrics to be returned.
Note that this is the code provided by the Prometheus SimpleClient bundle, we
can't influence how it behaves. I tried.
{noformat}
29.08.2023 17:42:16.461 *ERROR* [FelixLogListener]
LogService.org.apache.felix.http.jetty Exception while processing request to
/metrics (java.lang.NullPointerException: Cannot invoke "Object.getClass()"
because "obj" is null)
java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "obj"
is null
at
io.prometheus.client.dropwizard.DropwizardExports.fromGauge(DropwizardExports.java:55)
[io.prometheus.simpleclient_dropwizard:0.0.23]
at
io.prometheus.client.dropwizard.DropwizardExports.collect(DropwizardExports.java:133)
[io.prometheus.simpleclient_dropwizard:0.0.23]
at
io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.findNextElement(CollectorRegistry.java:180)
[io.prometheus.simpleclient:0.0.23]
at
io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.<init>(CollectorRegistry.java:144)
[io.prometheus.simpleclient:0.0.23]
at
io.prometheus.client.CollectorRegistry.filteredMetricFamilySamples(CollectorRegistry.java:131)
[io.prometheus.simpleclient:0.0.23]
at
io.prometheus.client.exporter.MetricsServlet.doGet(MetricsServlet.java:43)
[io.prometheus.simpleclient_servlet:0.0.23]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
[org.apache.felix.http.servlet-api:1.2.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
[org.apache.felix.http.servlet-api:1.2.0]
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)