dubbo 升级到3.0.5版本后Filter中使用InheritableThreadLocal会有问题

xqk2d5yq  于 2022-10-21  发布在  其他
关注(0)|答案(4)|浏览(161)

使用org.apache.dubbo.rpc.Filter传递上下文信息,使用InheritableThreadLocal存储上下文参数,之前2.7.3版本的时候是没有问题的,最近升级到3.0.5版本之后,发现这个ThreadLocal是由main线程创建的,因为这个ThreadLocal是子线程共享的,导致所有线程都获取到同一参数。

经过定位发现3.0.5版本在启动的时候会调用MetadataService服务,是通过main线程直接调用的,调用过程中会经过Filter,导致直接在主线程创建了ThreadLocal,后面所有的Tomcat线程都共享了主线程创建的这个ThreadLocal了

vojdkbi0

vojdkbi01#

Can you provide a demo?

epggiuax

epggiuax2#

@liunancun 你好,方便提供一个demo复现问题吗?

i1icjdpr

i1icjdpr3#

使用org.apache.dubbo.rpc.Filter传递上下文信息,使用InheritableThreadLocal存储上下文参数

Can you provide more information on how did you use the Filter and InheritableThreadLocal? I think it's more like an issue of how InheritableThreadLocal is used than a common issue of Dubbo.

wztqucjr

wztqucjr4#

BTW, I think it's indeed necessary to disable some of the default filters for MetadataService.

相关问题