This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new ace657098bb Upgrades micrometer (#10091)
ace657098bb is described below
commit ace657098bb11b8712defdfec8c8b09ca82967b4
Author: Marcin Grzejszczak <[email protected]>
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>