[ https://issues.apache.org/jira/browse/CAMEL-21302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17891829#comment-17891829 ]
Claus Ibsen commented on CAMEL-21302: ------------------------------------- {code:java} 2024-10-22 14:07:44,387 [Pool-2-worker-1] DEBUG ActiveSpanManager - Failed to close span scope. This exception is ignored. java.lang.IllegalStateException: Thread [ForkJoinPool-1-worker-1] opened scope, but thread [ForkJoinPool-2-worker-1] closed it at io.opentelemetry.context.StrictContextStorage$StrictScope.close(StrictContextStorage.java:205) ~[opentelemetry-context-1.43.0.jar:1.43.0] at org.apache.camel.tracing.ActiveSpanManager$Holder.closeScope(ActiveSpanManager.java:147) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.tracing.ActiveSpanManager.deactivate(ActiveSpanManager.java:87) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.tracing.Tracer$TracingEventNotifier.notify(Tracer.java:266) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.EventHelper.doNotifyEvent(EventHelper.java:1574) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.EventHelper.notifyExchangeSent(EventHelper.java:1048) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.processor.SendProcessor.lambda$process$0(SendProcessor.java:193) ~[camel-core-processor-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.AsyncCallback.run(AsyncCallback.java:44) ~[camel-api-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.opentelemetry.CurrentSpanTest$AsyncMockEndpoint$1.lambda$process$1(CurrentSpanTest.java:339) ~[test-classes/:?] at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) [?:?] at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) [?:?] at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1810) [?:?] at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) [?:?] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) [?:?] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) [?:?] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) [?:?] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) [?:?] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) [?:?] Caused by: io.opentelemetry.context.StrictContextStorage$CallerStackTrace: Thread [ForkJoinPool-1-worker-1] opened scope for {opentelemetry-trace-span-key=SdkSpan{traceId=d1c56f92efbcbfee77db67d3fce5581e, spanId=3397200e7a63509c, parentSpanContext=ImmutableSpanContext{traceId=d1c56f92efbcbfee77db67d3fce5581e, spanId=79c4b170505d1064, traceFlags=01, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, name=asyncmock1, kind=CLIENT, attributes=AttributesMap{data={camel.uri=asyncmock1://result, url.path=result, component=camel-asyncmock1, url.scheme=asyncmock1}, capacity=128, totalAddedValues=4}, status=ImmutableStatusData{statusCode=UNSET, description=}, totalRecordedEvents=0, totalRecordedLinks=0, startEpochNanos=1729598864373351708, endEpochNanos=0}} here: at org.apache.camel.opentelemetry.OpenTelemetrySpanAdapter.makeCurrent(OpenTelemetrySpanAdapter.java:118) ~[classes/:?] at org.apache.camel.tracing.ActiveSpanManager$Holder.<init>(ActiveSpanManager.java:128) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.tracing.ActiveSpanManager.activate(ActiveSpanManager.java:67) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.tracing.Tracer$TracingEventNotifier.notify(Tracer.java:250) ~[camel-tracing-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.EventHelper.doNotifyEvent(EventHelper.java:1574) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.EventHelper.notifyExchangeSending(EventHelper.java:1005) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:166) ~[camel-core-processor-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:104) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:104) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.handleFirst(RedeliveryErrorHandler.java:440) ~[camel-core-processor-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:416) ~[camel-core-processor-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) ~[camel-core-processor-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:100) ~[camel-direct-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor.processNonTransacted(SharedCamelInternalProcessor.java:156) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:133) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor$1.process(SharedCamelInternalProcessor.java:89) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:82) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:86) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:178) ~[camel-support-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:176) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:172) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:153) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:187) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:195) ~[camel-base-engine-4.9.0-SNAPSHOT.jar:4.9.0-SNAPSHOT] at org.apache.camel.opentelemetry.CurrentSpanTest.testDirectToDirectToAsync(CurrentSpanTest.java:122) ~[test-classes/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767) ~[junit-platform-commons-1.11.3.jar:1.11.3] at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.11.3.jar:5.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.exec(ForkJoinPoolHierarchicalTestExecutorService.java:274) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.execSync(ForkJoinPoolHierarchicalTestExecutorService.java:247) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.executeSync(ForkJoinPoolHierarchicalTestExecutorService.java:194) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:166) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.exec(ForkJoinPoolHierarchicalTestExecutorService.java:274) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.execSync(ForkJoinPoolHierarchicalTestExecutorService.java:247) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:159) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3] at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.exec(ForkJoinPoolHierarchicalTestExecutorService.java:274) ~[junit-platform-engine-1.11.3.jar:1.11.3] ... 5 more {code} > camel-opentelemetry context leak with direct async producer > ----------------------------------------------------------- > > Key: CAMEL-21302 > URL: https://issues.apache.org/jira/browse/CAMEL-21302 > Project: Camel > Issue Type: Bug > Components: camel-opentelemetry > Reporter: John Poth > Assignee: Freeman Yue Fang > Priority: Major > Fix For: 4.9.0 > > > There seems to be a Otel context leak when using a CXF producer in async > mode. This causes different requests to have the same _traceId._ As a > workaround, setting _synchronous=true_ on the CXF producer resolves the > issue. Here's a reproducer: > {code:java} > @Override > protected RoutesBuilder createRouteBuilder() { > return new RouteBuilder() { > @Override > public void configure() { > from("direct:start").routeId("myRoute") > .to("direct:send") > .end(); > from("direct:send") > .log("message") > .to("cxfrs:http://localhost:" + port1 > + "/rest/helloservice/sayHello?synchronous=false"); > // setting to 'true' resolves the issue > restConfiguration() > .port(port1); > rest("/rest/helloservice") > .post("/sayHello").routeId("rest-GET-say-hi") > .to("direct:sayHi"); > from("direct:sayHi") > .routeId("mock-GET-say-hi") > .log("example") > .to("mock:end"); > }}; > {code} > > I've added the complete unit here: > https://github.com/apache/camel/blob/7d83a62b8e442dc9ac6fd79b153192add940301e/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/AsyncCxfTest.java -- This message was sent by Atlassian Jira (v8.20.10#820010)