This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new f076af5  CAMEL-13982: Handle gauge metrics not being reusable
f076af5 is described below

commit f076af570e623360e7c067fb7a973f27e4bb6373
Author: James Netherton <jamesnether...@gmail.com>
AuthorDate: Fri Sep 20 11:19:29 2019 +0100

    CAMEL-13982: Handle gauge metrics not being reusable
---
 .../metrics/MicroProfileMetricsGaugeProducer.java             | 10 +++++++++-
 .../microprofile/metrics/MicroProfileMetricsGaugeTest.java    | 11 +++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-microprofile-metrics/src/main/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeProducer.java
 
b/components/camel-microprofile-metrics/src/main/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeProducer.java
index be02e38..7a1373d 100644
--- 
a/components/camel-microprofile-metrics/src/main/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeProducer.java
+++ 
b/components/camel-microprofile-metrics/src/main/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeProducer.java
@@ -26,6 +26,7 @@ import org.eclipse.microprofile.metrics.Metadata;
 import org.eclipse.microprofile.metrics.MetricRegistry;
 import org.eclipse.microprofile.metrics.Tag;
 import static 
org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants.HEADER_GAUGE_VALUE;
+import static 
org.apache.camel.component.microprofile.metrics.MicroProfileMetricsHelper.findMetric;
 
 public class MicroProfileMetricsGaugeProducer extends 
AbstractMicroProfileMetricsProducer<SimpleGauge> {
 
@@ -45,6 +46,13 @@ public class MicroProfileMetricsGaugeProducer extends 
AbstractMicroProfileMetric
 
     @Override
     protected Function<MetricRegistry, SimpleGauge> registerMetric(Metadata 
metadata, List<Tag> tags) {
-        return metricRegistry -> metricRegistry.register(metadata, new 
SimpleGauge(), tags.toArray(new Tag[0]));
+        return metricRegistry -> {
+            Tag[] tagArray = tags.toArray(new Tag[0]);
+            SimpleGauge existing = findMetric(metricRegistry, 
metadata.getName(), SimpleGauge.class, tags);
+            if (existing == null) {
+                return metricRegistry.register(metadata, new SimpleGauge(), 
tagArray);
+            }
+            return existing;
+        };
     }
 }
diff --git 
a/components/camel-microprofile-metrics/src/test/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeTest.java
 
b/components/camel-microprofile-metrics/src/test/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeTest.java
index ceffd8d..cdc4835 100644
--- 
a/components/camel-microprofile-metrics/src/test/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeTest.java
+++ 
b/components/camel-microprofile-metrics/src/test/java/org/apache/camel/component/microprofile/metrics/MicroProfileMetricsGaugeTest.java
@@ -45,6 +45,17 @@ public class MicroProfileMetricsGaugeTest extends 
MicroProfileMetricsTestSupport
         assertEquals(20, gauge.getValue().intValue());
     }
 
+    @Test
+    public void testGaugeMetricReuse() {
+        template.sendBody("direct:gaugeValue", null);
+        SimpleGauge gauge = getSimpleGauge("test-gauge");
+        assertEquals(10, gauge.getValue().intValue());
+
+        template.sendBodyAndHeader("direct:gaugeValue", null, 
HEADER_GAUGE_VALUE, 20);
+        gauge = getSimpleGauge("test-gauge");
+        assertEquals(20, gauge.getValue().intValue());
+    }
+
     @Override
     protected RoutesBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {

Reply via email to