guavaRetry模块出现问题
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- java
調査の方向性
Read TestClient.java and guavaRetry.java, focusing first on the retryIfResult call and how concurrent requests produce responses. Reproduce the issue with more than ten threads and verify that a null response does not stop retry handling or cause a NullPointerException; the retry listener should report subsequent attempts.
索引モデルが issue の本文から書いたものです。
説明
我在TestClient.java里用for循环创建10个以上线程同时向服务器发送请求时会抛出几个异常,似乎是客户端的请求得到了空的返回结果
尤其是后面的线程在执行到guavaRetry.java的
.retryIfResult(response -> Objects.equals(response.getCode(), 500))
这行代码时会抛出异常
java.lang.NullPointerException: Cannot invoke "part1.common.Message.RpcResponse.getCode()" because "response" is null
然后retryer不会进行下一次重试了,控制台输出也只有RetryListener: 第1次调用 没有第二次和第三次
我把代码改成
.retryIfResult(response -> response == null || Objects.equals(response.getCode(), 500))
之后才能正常进行下一次重试
请问这是代码的问题还是我运行方式有问题
public class TestClient {
public static void main(String[] args) throws InterruptedException {
ClientProxy clientProxy=new ClientProxy();
UserService proxy=clientProxy.getProxy(UserService.class);
for(int i = 0; i < 15; i++) {
Integer i1 = i;
new Thread(()->{
try{
User user = proxy.getUserByUserId(i1);
System.out.println("从服务端得到的user="+user.toString());
Integer id = proxy.insertUserId(User.builder().id(i1).userName("User" + i1.toString()).sex(true).build());
System.out.println("向服务端插入user的id"+id);
} catch (NullPointerException e){
System.out.println("user为空");
e.printStackTrace();
}
}).start();
}
}
// User u=User.builder().id(100).userName("wxx").sex(true).build();
// Integer id = proxy.insertUserId(u);
// System.out.println("向服务端插入user的id"+id);
}
- 主要言語
- Java
- スター
- 694
- フォーク
- 165
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
youngyangyang04/RPC-Java のほかの issue
-
version5关于令牌オープン
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
youngyangyang04/RPC-Java#55 ·
-
version5 启动报错オープン
難易度 3/5 1〜2日 初心者へのやさしさ 30/100
youngyangyang04/RPC-Java#53 · コメント 1 件 ·
-
Version6限流器问题オープン
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
youngyangyang04/RPC-Java#51 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 28/100
youngyangyang04/RPC-Java#50 ·
-
如何压测オープン
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
youngyangyang04/RPC-Java#49 · コメント 1 件 ·
youngyangyang04/RPC-Java の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
strimzi/strimzi-kafka-operator#13328 · コメント 1 件 · リアクション 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
OpenLiberty/ci.maven#2137 ·
メンテナーはふだん 1 日以内に返信
-
Payer adjustment can exceed the balance left after copay and deductible, so claim payments add up to more than the charge対応中かも @DG47 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
synthetichealth/synthea#1772 ·
メンテナーはふだん 13 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
geonetwork/core-geonetwork#9592 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
NationalSecurityAgency/ghidra#10040 ·
メンテナーはふだん 2 日以内に返信