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() {