You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/05/16 04:33:48 UTC

[camel] branch camel-3.x updated: Upgrades micrometer (#10091)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.x by this push:
     new ab057a71bcb Upgrades micrometer (#10091)
ab057a71bcb is described below

commit ab057a71bcb133a07e5cc5b099a4bef79471d3b8
Author: Marcin Grzejszczak <mg...@vmware.com>
AuthorDate: Tue May 16 06:33:39 2023 +0200

    Upgrades micrometer (#10091)
---
 .../observation/MicrometerObservationTracer.java   | 27 ++++++++++++++++++----
 parent/pom.xml                                     |  4 ++--
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java
index e8b931456f6..9097c6dcc4c 100644
--- a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java
+++ b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java
@@ -24,7 +24,9 @@ import io.micrometer.observation.transport.ReceiverContext;
 import io.micrometer.observation.transport.RequestReplyReceiverContext;
 import io.micrometer.observation.transport.RequestReplySenderContext;
 import io.micrometer.observation.transport.SenderContext;
+import io.micrometer.tracing.Span;
 import io.micrometer.tracing.Tracer;
+import io.micrometer.tracing.handler.TracingObservationHandler;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.api.management.ManagedResource;
@@ -130,18 +132,35 @@ public class MicrometerObservationTracer extends org.apache.camel.tracing.Tracer
 
     @Override
     protected SpanAdapter startSendingEventSpan(
-            String operationName, SpanKind kind, SpanAdapter parentObservation, Exchange exchange,
+            String operationName, SpanKind kind, SpanAdapter parent, Exchange exchange,
             InjectAdapter injectAdapter) {
         Observation.Context context = spanKindToContextOnInject(kind, injectAdapter, exchange);
         Observation observation = Observation.createNotStarted(CAMEL_CONTEXT_NAME, () -> context, observationRegistry);
         observation.contextualName(operationName);
-        if (parentObservation != null) {
-            observation.parentObservation(getParentObservation(parentObservation));
+        Observation parentObservation = getParentObservation(parent);
+        Tracer.SpanInScope scope = null;
+        try {
+            if (parentObservation != observationRegistry.getCurrentObservation()) {
+                // Because Camel allows to close scopes multiple times
+                TracingObservationHandler.TracingContext tracingContext = parentObservation.getContextView().get(TracingObservationHandler.TracingContext.class);
+                Span parentSpan = tracingContext.getSpan();
+                scope = tracer.withSpan(parentSpan);
+            }
+            if (parentObservation != null) {
+                observation.parentObservation(parentObservation);
+            }
+            return new MicrometerObservationSpanAdapter(observation.start(), tracer);
+        } finally {
+            if (scope != null) {
+                scope.close();
+            }
         }
-        return new MicrometerObservationSpanAdapter(observation.start(), tracer);
     }
 
     private static Observation getParentObservation(SpanAdapter parentObservation) {
+        if (parentObservation == null) {
+            return null;
+        }
         MicrometerObservationSpanAdapter observationWrapper = (MicrometerObservationSpanAdapter) parentObservation;
         return observationWrapper.getMicrometerObservation();
     }
diff --git a/parent/pom.xml b/parent/pom.xml
index 69bb99460d0..5b353cd8f17 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -393,8 +393,8 @@
         <maven-wagon-version>3.5.2</maven-wagon-version>
         <maven-war-plugin-version>3.3.1</maven-war-plugin-version>
         <metrics-version>4.2.15</metrics-version>
-        <micrometer-version>1.10.5</micrometer-version>
-        <micrometer-tracing-version>1.0.3</micrometer-tracing-version>
+        <micrometer-version>1.10.7</micrometer-version>
+        <micrometer-tracing-version>1.0.6</micrometer-tracing-version>
         <microprofile-config-version>2.0.1</microprofile-config-version>
         <microprofile-metrics-version>3.0.1</microprofile-metrics-version>
         <microprofile-fault-tolerance-version>3.0</microprofile-fault-tolerance-version>