From b516cb97d21cec7870e10004d46fa7bad0de60cc Mon Sep 17 00:00:00 2001 From: ajian2002 Date: Tue, 9 Aug 2022 15:47:58 +0800 Subject: [PATCH 1/2] fix retry with resolvedlocks info Signed-off-by: ajian2002 --- .../org/tikv/common/region/RegionStoreClient.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/tikv/common/region/RegionStoreClient.java b/src/main/java/org/tikv/common/region/RegionStoreClient.java index ba742c872b0..511ae2e6bba 100644 --- a/src/main/java/org/tikv/common/region/RegionStoreClient.java +++ b/src/main/java/org/tikv/common/region/RegionStoreClient.java @@ -298,7 +298,16 @@ public List batchGet(BackOffer backOffer, List keys, long ve forWrite); BatchGetResponse resp = callWithRetry(backOffer, TikvGrpc.getKvBatchGetMethod(), request, handler); - return handleBatchGetResponse(backOffer, resp, version); + try { + return handleBatchGetResponse(backOffer, resp, version); + } catch (TiKVException e) { + if ("locks not resolved, retry".equals(e.getMessage())) { + backOffer.doBackOff(BackOffFunction.BackOffFuncType.BoTxnLock, e); + return batchGet(backOffer, keys, version); + } else { + throw e; + } + } } private List handleBatchGetResponse( From 579104161636c2f10e6bb1c5c3a7dc4a0e4572a6 Mon Sep 17 00:00:00 2001 From: ajian2002 Date: Tue, 9 Aug 2022 15:58:20 +0800 Subject: [PATCH 2/2] fix retry with resolvedlocks info Signed-off-by: ajian2002 --- .../tikv/common/region/RegionStoreClient.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/tikv/common/region/RegionStoreClient.java b/src/main/java/org/tikv/common/region/RegionStoreClient.java index 511ae2e6bba..cda8ffa9870 100644 --- a/src/main/java/org/tikv/common/region/RegionStoreClient.java +++ b/src/main/java/org/tikv/common/region/RegionStoreClient.java @@ -298,20 +298,11 @@ public List batchGet(BackOffer backOffer, List keys, long ve forWrite); BatchGetResponse resp = callWithRetry(backOffer, TikvGrpc.getKvBatchGetMethod(), request, handler); - try { - return handleBatchGetResponse(backOffer, resp, version); - } catch (TiKVException e) { - if ("locks not resolved, retry".equals(e.getMessage())) { - backOffer.doBackOff(BackOffFunction.BackOffFuncType.BoTxnLock, e); - return batchGet(backOffer, keys, version); - } else { - throw e; - } - } + 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); @@ -338,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());