fixing concurrent gauge interceptor decr call
diff --git a/geronimo-metrics-extensions/geronimo-metrics-extension-common/src/main/java/org/apache/geronimo/microprofile/metrics/extension/common/MicroprofileMetricsAdapter.java b/geronimo-metrics-extensions/geronimo-metrics-extension-common/src/main/java/org/apache/geronimo/microprofile/metrics/extension/common/MicroprofileMetricsAdapter.java
index 9dbbb64..a8e46e8 100644
--- a/geronimo-metrics-extensions/geronimo-metrics-extension-common/src/main/java/org/apache/geronimo/microprofile/metrics/extension/common/MicroprofileMetricsAdapter.java
+++ b/geronimo-metrics-extensions/geronimo-metrics-extension-common/src/main/java/org/apache/geronimo/microprofile/metrics/extension/common/MicroprofileMetricsAdapter.java
@@ -34,9 +34,14 @@
public Consumer<Definition> registrer() {
return def -> {
- final Metadata metadata = new Metadata(def.getName(), def.getDisplayName(), def.getDescription(), GAUGE,
- def.getUnit());
- metadata.setReusable(true);
+ final Metadata metadata = Metadata.builder()
+ .withName(def.getName())
+ .withDisplayName(def.getDisplayName())
+ .withDescription(def.getDescription())
+ .withType(GAUGE)
+ .withUnit(def.getUnit())
+ .reusable(true)
+ .build();
try {
registry.register(metadata, (Gauge<Double>) () -> def.getEvaluator()
.getAsDouble());
diff --git a/geronimo-metrics/src/main/java/org/apache/geronimo/microprofile/metrics/cdi/ConcurrentGaugeInterceptor.java b/geronimo-metrics/src/main/java/org/apache/geronimo/microprofile/metrics/cdi/ConcurrentGaugeInterceptor.java
index f87aed1..586d16c 100644
--- a/geronimo-metrics/src/main/java/org/apache/geronimo/microprofile/metrics/cdi/ConcurrentGaugeInterceptor.java
+++ b/geronimo-metrics/src/main/java/org/apache/geronimo/microprofile/metrics/cdi/ConcurrentGaugeInterceptor.java
@@ -76,9 +76,7 @@
try {
return context.proceed();
} finally {
- if (!counter.skipDecrement) {
- counter.gauge.dec();
- }
+ counter.gauge.dec();
}
}
@@ -106,13 +104,12 @@
.map(org.eclipse.microprofile.metrics.annotation.ConcurrentGauge::name)
.orElse(""));
- final ConcurrentGauge counter = ConcurrentGauge.class.cast(registry.getMetrics().get(
+ final ConcurrentGauge gauge = ConcurrentGauge.class.cast(registry.getMetrics().get(
new MetricID(name, concurrentGauge == null ? new Tag[0] : extension.createTags(concurrentGauge.tags()))));
- if (counter == null) {
+ if (gauge == null) {
throw new IllegalStateException("No counter with name [" + name + "] found in registry [" + registry + "]");
}
- meta = new Meta(counter, !ofNullable(concurrentGauge)
- .orElseGet(() -> type.getAnnotation(org.eclipse.microprofile.metrics.annotation.ConcurrentGauge.class)).absolute());
+ meta = new Meta(gauge);
gauges.putIfAbsent(executable, meta);
}
return meta;
@@ -120,11 +117,9 @@
private static final class Meta {
private final ConcurrentGauge gauge;
- private final boolean skipDecrement;
- private Meta(final ConcurrentGauge gauge, final boolean skipDecrement) {
+ private Meta(final ConcurrentGauge gauge) {
this.gauge = gauge;
- this.skipDecrement = skipDecrement;
}
}
}