apache / apache/servicecomb-java-chassis

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

オープン
#4,569 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
1.9k
フォーク
814
平均マージ
8日 23時間
マージ済み PR(30日)
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 呼び出し中に失敗経路が null ポインター例外を引き起こさなくなることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
backend, distributed-systems
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。