首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
程序员
求助: grpc 服务端拦截器中使用 transmittable-thread-local, ttlContext 中获取数据不正确
tianwaifeixian
·
2023-09-26 17:43:46 +08:00
· 598 次点击
这是一个创建于 391 天前的主题,其中的信息可能已经有所发展或是发生改变。
背景:grpc 客户端 header 会携带 requestId 请求 grpc 服务端,在 grpc 服务端实现 ServerInterceptor 拦截器,将 requestId 写入到 ttlContext ,以供后续业务使用
问题:grpc 客户端 header 传递 requestId 字段时,业务可以正常从 ttlContext 获取到值,当 grpc 客户端再一次请求过来不携带 requestId 时,ttlContext 中会获取到上次一次的 requestId 值,打断点确认上一次执行请求结束对 ttlContext 进行了清空,但是打断点发现第二次请求一进入拦截器 ttlContext 就已经有上次的值,求大佬解惑
ttlcontext
grpc
RequestId
拦截器
2 条回复
•
2023-09-27 18:10:36 +08:00
1
SilenceLL
2023-09-27 13:55:19 +08:00
看下有没有传给子线程或者线程池使用,也要清除一下。
2
tianwaifeixian
OP
2023-09-27 18:10:36 +08:00
@
SilenceLL
谢谢,找到问题了,是因为重写了 ThreadLocal init 方法,传了一个 hashMap 进去,调用 ThreadLocal 的 remove 方法只清除了引用,map 没有清空
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
995 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms ·
UTC 21:05
·
PVG 05:05
·
LAX 14:05
·
JFK 17:05
Developed with
CodeLauncher
♥ Do have faith in what you're doing.