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;

Reply via email to