From c5afa0e53e68f45eee041e5011bd1655e32bedff Mon Sep 17 00:00:00 2001 From: Iacopo Pace Date: Thu, 18 Jul 2024 19:54:39 -0700 Subject: [PATCH] Nullify noLabels in StatefulMetric during clear() to prevent no-labels increase to stop working Signed-off-by: Iacopo Pace --- .../io/prometheus/metrics/core/metrics/StatefulMetric.java | 1 + .../prometheus/metrics/core/metrics/StatefulMetricTest.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java index 43555167a..44f6cc57a 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java @@ -114,6 +114,7 @@ public void remove(String... labelValues) { */ public void clear() { data.clear(); + noLabels = null; } protected abstract T newDataPoint(); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java index b1c45fa80..dd2c4355a 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java @@ -60,5 +60,10 @@ public void testClearNoLabels() { // No labels is always present, but as no value has been observed after clear() the value should be 0.0 Assert.assertEquals(1, counter.collect().getDataPoints().size()); Assert.assertEquals(0.0, counter.collect().getDataPoints().get(0).getValue(), 0.0); + + // Making inc() works correctly after clear() + counter.inc(); + Assert.assertEquals(1, counter.collect().getDataPoints().size()); + Assert.assertEquals(1.0, counter.collect().getDataPoints().get(0).getValue(), 0.0); } }