diff --git a/src/main/java/org/tikv/common/region/RegionStoreClient.java b/src/main/java/org/tikv/common/region/RegionStoreClient.java index ba742c872b0..cda8ffa9870 100644 --- a/src/main/java/org/tikv/common/region/RegionStoreClient.java +++ b/src/main/java/org/tikv/common/region/RegionStoreClient.java @@ -298,11 +298,11 @@ public List batchGet(BackOffer backOffer, List keys, long ve forWrite); BatchGetResponse resp = callWithRetry(backOffer, TikvGrpc.getKvBatchGetMethod(), request, handler); - return handleBatchGetResponse(backOffer, resp, version); + return handleBatchGetResponse(backOffer, resp, version, keys); } private List handleBatchGetResponse( - BackOffer backOffer, BatchGetResponse resp, long version) { + BackOffer backOffer, BatchGetResponse resp, long version, List keys) { boolean forWrite = false; if (resp == null) { this.regionManager.onRequestFail(region); @@ -329,7 +329,10 @@ private List handleBatchGetResponse( lockResolverClient.resolveLocks(backOffer, version, locks, forWrite); addResolvedLocks(version, resolveLockResult.getResolvedLocks()); // resolveLocks already retried, just throw error to upper logic. - throw new TiKVException("locks not resolved, retry"); + backOffer.doBackOff( + BackOffFunction.BackOffFuncType.BoTxnLock, + new TiKVException("locks not resolved, retry")); + return batchGet(backOffer, keys, version); } return codec.decodeKvPairs(resp.getPairsList());