一次「找回」TraceId的问题分析与过程思考
小结:
1、
虽然MTrace已经通过javaagent&instrument技术可以完成Trace信息跨线程传递,但是目前只覆盖到ThreadPoolExecutor类、ScheduledThreadPoolExecutor类和ForkJoinTask类的字节码,而@Async在未指定线程池的情况下默认会启用SimpleAsyncTaskExecutor,其本质是java.util.concurrent.Executor没有被覆盖到,就会造成ThreadLocal中的get方法获取信息为空,导致最终TraceId传递丢失。
一次「找回」TraceId的问题分析与过程思考 https://mp.weixin.qq.com/s/T7P2-tiroXWI9xd8FhsuFA