From c93cae3dc5816bad169eb8ebd47f061ac54961ab Mon Sep 17 00:00:00 2001 From: birdstorm Date: Tue, 8 Jun 2021 15:31:51 +0900 Subject: [PATCH] cherry pick #182 to release-3.1 Signed-off-by: ti-srebot --- src/main/java/org/tikv/common/PDClient.java | 2 +- src/main/java/org/tikv/common/operation/PDErrorHandler.java | 1 + src/test/java/org/tikv/common/PDMockServer.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/tikv/common/PDClient.java b/src/main/java/org/tikv/common/PDClient.java index b54b2afb293..f895e6c27be 100644 --- a/src/main/java/org/tikv/common/PDClient.java +++ b/src/main/java/org/tikv/common/PDClient.java @@ -418,7 +418,7 @@ synchronized boolean switchLeader(List leaderURLs) { return createLeaderWrapper(leaderUrlStr); } - private boolean createLeaderWrapper(String leaderUrlStr) { + private synchronized boolean createLeaderWrapper(String leaderUrlStr) { try { URI newLeader = addrToUri(leaderUrlStr); leaderUrlStr = uriToAddr(newLeader); diff --git a/src/main/java/org/tikv/common/operation/PDErrorHandler.java b/src/main/java/org/tikv/common/operation/PDErrorHandler.java index 27441d9a0e0..7c79a3d6d84 100644 --- a/src/main/java/org/tikv/common/operation/PDErrorHandler.java +++ b/src/main/java/org/tikv/common/operation/PDErrorHandler.java @@ -73,6 +73,7 @@ public boolean handleResponseError(BackOffer backOffer, RespT resp) { @Override public boolean handleRequestError(BackOffer backOffer, Exception e) { backOffer.doBackOff(BackOffFunction.BackOffFuncType.BoPDRPC, e); + client.updateLeader(); return true; } } diff --git a/src/test/java/org/tikv/common/PDMockServer.java b/src/test/java/org/tikv/common/PDMockServer.java index 81e9c64bd2d..521a286741f 100644 --- a/src/test/java/org/tikv/common/PDMockServer.java +++ b/src/test/java/org/tikv/common/PDMockServer.java @@ -43,7 +43,7 @@ public void addGetMemberResp(GetMembersResponse r) { @Override public void getMembers(GetMembersRequest request, StreamObserver resp) { try { - resp.onNext(getMembersResp.removeFirst().get()); + resp.onNext(getMembersResp.getFirst().get()); resp.onCompleted(); } catch (Exception e) { resp.onError(Status.INTERNAL.asRuntimeException());