java-spring-cloud icon indicating copy to clipboard operation
java-spring-cloud copied to clipboard

Trace context does not propagate to the callback of ThreadPoolTaskExecutor/Scheduler

Open JasonMing opened this issue 5 years ago • 2 comments

TracedThreadPoolTaskExecutor tracedExecutor = new TracedThreadPoolTaskExecutor(myExecutor, GlobalTracer.get());
try (Scope scope = GlobalTracer.activateSpan(span)) {
    ListenableFuture<?> future = tracedExecutor.submitListenable(() -> {
        Thread.sleep(1000); // Let callback run in other thread
        System.out.println(GlobalTracer.get().activeSpan()); // It's OK
    });
    future.addCallback(
        r -> System.out.println(GlobalTracer.get().activeSpan()), // Context loss!
        e -> {}
    );
}

This is confusing me, the context (activeSpan) is missed in the callback while the main task can get it correctly.

JasonMing avatar Apr 29 '20 09:04 JasonMing

@JasonMing would you like to submit a fix for https://github.com/opentracing-contrib/java-spring-cloud/blob/master/instrument-starters/opentracing-spring-cloud-core/src/main/java/io/opentracing/contrib/spring/cloud/async/instrument/TracedThreadPoolTaskExecutor.java#L30?

pavolloffay avatar Apr 30 '20 07:04 pavolloffay

@pavolloffay I open a PR #287 , could you please review it?

JasonMing avatar May 01 '20 16:05 JasonMing