From bb6114e1d90092fd5be1df53ffdb45dc25d15b73 Mon Sep 17 00:00:00 2001 From: Wallace Date: Wed, 28 Jul 2021 11:01:19 +0800 Subject: [PATCH 1/2] cherry pick #241 to release-3.1 Signed-off-by: ti-srebot --- .../common/operation/RegionErrorHandler.java | 5 +++- .../region/AbstractRegionStoreClient.java | 2 +- .../tikv/common/util/ConcreteBackOffer.java | 26 +++++++++---------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java index a463988ca96..afa5d5c5ea2 100644 --- a/src/main/java/org/tikv/common/operation/RegionErrorHandler.java +++ b/src/main/java/org/tikv/common/operation/RegionErrorHandler.java @@ -131,9 +131,12 @@ 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()); + return false; } else if (error.hasStaleCommand()) { // this error is reported from raftstore: // command outdated, please try later 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(); } } 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 657afcb142f6dbc9c0cc3a6f1feb62c2134e23de Mon Sep 17 00:00:00 2001 From: Little-Wallace Date: Wed, 28 Jul 2021 14:15:21 +0800 Subject: [PATCH 2/2] fix test Signed-off-by: Little-Wallace --- src/main/java/org/tikv/common/util/ConcreteBackOffer.java | 2 +- src/test/java/org/tikv/common/PDClientTest.java | 2 +- src/test/java/org/tikv/common/RegionStoreClientTest.java | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/tikv/common/util/ConcreteBackOffer.java b/src/main/java/org/tikv/common/util/ConcreteBackOffer.java index 1148f64ea50..e881e8c1c93 100644 --- a/src/main/java/org/tikv/common/util/ConcreteBackOffer.java +++ b/src/main/java/org/tikv/common/util/ConcreteBackOffer.java @@ -96,7 +96,7 @@ private BackOffFunction createBackOffFunc(BackOffFunction.BackOffFuncType funcTy backOffFunction = BackOffFunction.create(2, 500, BackOffStrategy.NoJitter); break; case BoServerBusy: - backOffFunction = BackOffFunction.create(40, 5120, BackOffStrategy.EqualJitter); + backOffFunction = BackOffFunction.create(100, 5120, BackOffStrategy.EqualJitter); break; case BoUpdateLeader: backOffFunction = BackOffFunction.create(1, 10, BackOffStrategy.NoJitter); diff --git a/src/test/java/org/tikv/common/PDClientTest.java b/src/test/java/org/tikv/common/PDClientTest.java index bd49dce39e1..af13213dc2f 100644 --- a/src/test/java/org/tikv/common/PDClientTest.java +++ b/src/test/java/org/tikv/common/PDClientTest.java @@ -160,7 +160,7 @@ public void testGetStore() throws Exception { } private BackOffer defaultBackOff() { - return ConcreteBackOffer.newCustomBackOff(1000); + return ConcreteBackOffer.newCustomBackOff(100); } @Test diff --git a/src/test/java/org/tikv/common/RegionStoreClientTest.java b/src/test/java/org/tikv/common/RegionStoreClientTest.java index 76d006990b4..fa2ce51365e 100644 --- a/src/test/java/org/tikv/common/RegionStoreClientTest.java +++ b/src/test/java/org/tikv/common/RegionStoreClientTest.java @@ -165,6 +165,7 @@ public void doScanTest(RegionStoreClient client) throws Exception { client.scan(defaultBackOff(), ByteString.copyFromUtf8("error1"), 1); fail(); } catch (Exception e) { + e.printStackTrace(); assertTrue(true); } server.clearAllMap(); @@ -172,6 +173,6 @@ public void doScanTest(RegionStoreClient client) throws Exception { } private BackOffer defaultBackOff() { - return ConcreteBackOffer.newCustomBackOff(1000); + return ConcreteBackOffer.newCustomBackOff(50); } }