alibaba / jvm-sandbox

Real - time non-invasive AOP framework container based on JVM
GNU Lesser General Public License v3.0
6.69k stars 1.55k forks source link

在拦截点获取ThreadLocal内容为空 #435

Closed LiuYingjie-rd closed 10 months ago

LiuYingjie-rd commented 11 months ago

场景是:业务代码已经通过ThreadLocal实现了traceId的异步传递,每次异步开启线程时,都可以在当前线程获取到traceId,实现流量的串联。 但是当我在sandbox拦截点拦截到方法时,使用ThreadLocal.get()却取不到想要的traceId,但是debug后端代码却可以拿到,这是为什么呢?不都是同一个线程吗?

image
LiuYingjie-rd commented 11 months ago

想到一种可能,是否是因为上面的Tracer类在业务代码和sandbox代码并非同一个类加载器加载的,所以对应不同的ThreadLocal?