From afb17fc315fbd14479cae3cb21c465d8c545b716 Mon Sep 17 00:00:00 2001 From: Little-Wallace Date: Mon, 26 Jul 2021 14:50:58 +0800 Subject: [PATCH 1/3] fix backoff Signed-off-by: Little-Wallace --- .../common/operation/RegionErrorHandler.java | 4 ++- .../tikv/common/util/ConcreteBackOffer.java | 26 +++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java index 9aa678b41e7..427fc165ead 100644 --- a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java +++ b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java @@ -130,9 +130,11 @@ public boolean handleRegionError(BackOffer backOffer, Errorpb.Error error) { BackOffFunction.BackOffFuncType.BoServerBusy, new StatusRuntimeException( Status.fromCode(Status.Code.UNAVAILABLE).withDescription(error.toString()))); + return true; + } else if (error.hasRegionNotFound()) { backOffer.doBackOff( BackOffFunction.BackOffFuncType.BoRegionMiss, new GrpcException(error.getMessage())); - return true; + this.regionManager.onRegionStale(recv.getRegion()); } else if (error.hasStaleCommand()) { // this error is reported from raftstore: // command outdated, please try later diff --git a/src/main/java/org/tikv/common/util/ConcreteBackOffer.java b/src/main/java/org/tikv/common/util/ConcreteBackOffer.java index a7af12b85c1..1148f64ea50 100644 --- a/src/main/java/org/tikv/common/util/ConcreteBackOffer.java +++ b/src/main/java/org/tikv/common/util/ConcreteBackOffer.java @@ -86,29 +86,29 @@ public static ConcreteBackOffer create(BackOffer source) { private BackOffFunction createBackOffFunc(BackOffFunction.BackOffFuncType funcType) { BackOffFunction backOffFunction = null; switch (funcType) { - case BoUpdateLeader: - backOffFunction = BackOffFunction.create(1, 10, BackOffStrategy.NoJitter); - break; case BoTxnLockFast: backOffFunction = BackOffFunction.create(100, 3000, BackOffStrategy.EqualJitter); break; + case BoTxnLock: + backOffFunction = BackOffFunction.create(200, 3000, BackOffStrategy.EqualJitter); + break; + case BoTxnNotFound: + backOffFunction = BackOffFunction.create(2, 500, BackOffStrategy.NoJitter); + break; case BoServerBusy: - backOffFunction = BackOffFunction.create(2000, 10000, BackOffStrategy.EqualJitter); + backOffFunction = BackOffFunction.create(40, 5120, BackOffStrategy.EqualJitter); break; - case BoRegionMiss: - backOffFunction = BackOffFunction.create(100, 500, BackOffStrategy.NoJitter); + case BoUpdateLeader: + backOffFunction = BackOffFunction.create(1, 10, BackOffStrategy.NoJitter); break; - case BoTxnLock: - backOffFunction = BackOffFunction.create(200, 3000, BackOffStrategy.EqualJitter); + case BoRegionMiss: + backOffFunction = BackOffFunction.create(10, 640, BackOffStrategy.NoJitter); break; case BoPDRPC: - backOffFunction = BackOffFunction.create(100, 600, BackOffStrategy.EqualJitter); + backOffFunction = BackOffFunction.create(10, 640, BackOffStrategy.EqualJitter); break; case BoTiKVRPC: - backOffFunction = BackOffFunction.create(100, 400, BackOffStrategy.EqualJitter); - break; - case BoTxnNotFound: - backOffFunction = BackOffFunction.create(2, 500, BackOffStrategy.NoJitter); + backOffFunction = BackOffFunction.create(10, 640, BackOffStrategy.EqualJitter); break; } return backOffFunction; From 59a00097df06e498376826b4a8ff64ec029a0468 Mon Sep 17 00:00:00 2001 From: Little-Wallace Date: Mon, 26 Jul 2021 17:57:47 +0800 Subject: [PATCH 2/3] do not change scan timeout Signed-off-by: Little-Wallace --- .../java/org/tikv/common/region/AbstractRegionStoreClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tikv/common/region/AbstractRegionStoreClient.java b/src/main/java/org/tikv/common/region/AbstractRegionStoreClient.java index c47bb854746..ba6422a8eca 100644 --- a/src/main/java/org/tikv/common/region/AbstractRegionStoreClient.java +++ b/src/main/java/org/tikv/common/region/AbstractRegionStoreClient.java @@ -272,7 +272,7 @@ private boolean retryOtherStoreByProxyForward() { } if (originStore == null) { originStore = targetStore; - if (this.targetStore.getProxyStore() != null) { + if (this.targetStore.getProxyStore() != null && this.timeout < conf.getForwardTimeout()) { this.timeout = conf.getForwardTimeout(); } } From b623558b3326bf4e32317ce570e53afb236830a0 Mon Sep 17 00:00:00 2001 From: Little-Wallace Date: Wed, 28 Jul 2021 09:07:01 +0800 Subject: [PATCH 3/3] fix bug: region not found Signed-off-by: Little-Wallace --- src/main/java/org/tikv/common/operation/RegionErrorHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java index 427fc165ead..68237df3ba2 100644 --- a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java +++ b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java @@ -135,6 +135,7 @@ public boolean handleRegionError(BackOffer backOffer, Errorpb.Error error) { backOffer.doBackOff( BackOffFunction.BackOffFuncType.BoRegionMiss, new GrpcException(error.getMessage())); this.regionManager.onRegionStale(recv.getRegion()); + return false; } else if (error.hasStaleCommand()) { // this error is reported from raftstore: // command outdated, please try later