You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2019/09/20 10:20:13 UTC
[camel] branch master updated: CAMEL-13982: Handle gauge metrics
not being reusable
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 <ja...@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() {