diff --git a/src/main/java/org/tikv/common/PDClient.java b/src/main/java/org/tikv/common/PDClient.java index 9bbda330bad..ac4d4f39182 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());