[
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)