apache / apache/servicecomb-java-chassis

A服务RPC调用B服务找不到可用地址时,导致当前线程上下文被清除,接着再调用C服务时取CSE上下文报空指针异常

未关闭
#4,569 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
1.9k
派生
814
平均合并
8 天 23 小时
30 天内合并 PR
1

描述

1、当前线程A服务代码中第73行使用RPC方式异步调用B服务:
![业务逻辑调用](https://github.com/user-attachments/assets/93710f21-fd75-4bc7-b63a-9e7bde691a1a)

2、负载均衡没有找到B服务可用的地址:
![负载均衡没有可用机器](https://github.com/user-attachments/assets/46a5951a-b952-4071-804b-3d2b53b7e17e)

3、A服务当前线程上下文被清除:
![当前线程上下文被清除](https://github.com/user-attachments/assets/20846a4f-cc1a-4f6e-9eba-0d0ce95f6ed7)

4、A服务当前线程再接着调用C服务时,从上下文中获取参数时报空指针:
![调B服务失败后再取上下文时报空指针异常](https://github.com/user-attachments/assets/d70fe2f6-6b90-408c-b5d8-5316e4b8bc84)

贡献指南

这个仓库没有索引到贡献指南

调研方向

从第 73 行的 A-service 代码开始,跟踪 load balancer 找不到可用的 B-service 地址时的线程上下文处理。复现后续的 C-service 调用,并检查截图中显示的上下文查找;完成的标准是,故障路径在后续 C-service 调用期间不再导致空指针异常。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
backend, distributed-systems
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。