This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-4.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.18.x by this push:
new 5929d9923f99 [4.18.x] CAMEL-23811: Fix app.info gauge returning NaN
due to weak reference
5929d9923f99 is described below
commit 5929d9923f9945660cf1e1745f9b2600a80ea061
Author: James Netherton <[email protected]>
AuthorDate: Mon Jun 22 15:37:57 2026 +0100
[4.18.x] CAMEL-23811: Fix app.info gauge returning NaN due to weak reference
CAMEL-23811: Fix app.info gauge returning NaN due to weak reference
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
.../component/micrometer/json/AbstractMicrometerService.java | 11 +++++------
.../MicrometerRoutePolicyMulticastSubRouteTest.java | 10 ++++++++--
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java
index 64093f4914b5..1294280ccfa6 100644
---
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java
+++
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.micrometer.json;
-import java.util.ArrayList;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
@@ -24,6 +23,7 @@ import java.util.function.Predicate;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
+import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;
@@ -169,14 +169,13 @@ public class AbstractMicrometerService extends
ServiceSupport {
// If not other runtime is available, we assume we're on Camel
main
rt = Optional.of(new RuntimeInfo(RuntimeInfo.MAIN,
getCamelContext().getVersion()));
}
- meterRegistry.gaugeCollectionSize(
- APP_INFO_METER_NAME,
- Tags.of(
+ Gauge.builder(APP_INFO_METER_NAME, () -> 0.0)
+ .tags(Tags.of(
"camel.version", getCamelContext().getVersion(),
"camel.context", getCamelContext().getName(),
"camel.runtime.provider", rt.get().runtimeProvider,
- "camel.runtime.version", rt.get().runtimeVersion),
- new ArrayList<String>());
+ "camel.runtime.version", rt.get().runtimeVersion))
+ .register(meterRegistry);
}
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyMulticastSubRouteTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyMulticastSubRouteTest.java
index ed18d5c59ec0..6824279c8e4a 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyMulticastSubRouteTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyMulticastSubRouteTest.java
@@ -118,10 +118,16 @@ public class MicrometerRoutePolicyMulticastSubRouteTest
extends AbstractMicromet
"Counter " + counter.getId() + " should have count
of " + count);
break;
}
- case APP_INFO_METER_NAME:
+ case APP_INFO_METER_NAME: {
Gauge gauge = (Gauge) meter;
- // It's enough to validate it does not throw a class cast
exception
+ Meter.Id id = gauge.getId();
+ assertEquals(0.0, gauge.value(), "app.info gauge should
have a stable value of 0.0");
+ assertEquals(context.getVersion(),
id.getTag("camel.version"));
+ assertEquals(context.getName(),
id.getTag("camel.context"));
+ assertEquals("Main", id.getTag("camel.runtime.provider"));
+ assertEquals(context.getVersion(),
id.getTag("camel.runtime.version"));
break;
+ }
default: {
fail("Unexpected meter " + meterName);
break;