This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit ace657098bb11b8712defdfec8c8b09ca82967b4 Author: Marcin Grzejszczak <mgrzejszc...@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 5d10ac65780..e59fc859628 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,15 +132,29 @@ 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); } @Override @@ -147,6 +163,9 @@ public class MicrometerObservationTracer extends org.apache.camel.tracing.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 5d1273d4931..7019d0b33bf 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -360,8 +360,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.17</metrics-version> - <micrometer-version>1.10.6</micrometer-version> - <micrometer-tracing-version>1.0.4</micrometer-tracing-version> + <micrometer-version>1.10.7</micrometer-version> + <micrometer-tracing-version>1.0.6</micrometer-tracing-version> <microprofile-config-version>3.0.2</microprofile-config-version> <microprofile-fault-tolerance-version>4.0.2</microprofile-fault-tolerance-version> <milo-version>0.6.8</milo-version>