From 0d118802ebb8f3fb04669cf02265951506eed858 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Mon, 10 Apr 2023 19:38:26 +0800 Subject: [PATCH 1/6] select reachable store Signed-off-by: shiyuhang <1136742008@qq.com> --- src/main/java/org/tikv/common/region/RegionManager.java | 8 ++++++++ src/main/java/org/tikv/common/region/TiRegion.java | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index 37c3d73f759..9141b9a855b 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -228,12 +228,20 @@ public Pair getRegionStorePairByKey( TiStore store = null; if (storeType == TiStoreType.TiKV) { + region.SetReplicaIdx(0); Peer peer = region.getCurrentReplica(); store = getStoreById(peer.getStoreId(), backOffer); + while (!store.isReachable()){ + peer = region.getNextReplica(); + store = getStoreById(peer.getStoreId(), backOffer); + } } else { List tiflashStores = new ArrayList<>(); for (Peer peer : region.getLearnerList()) { TiStore s = getStoreById(peer.getStoreId(), backOffer); + if (!s.isReachable()) { + continue; + } for (Metapb.StoreLabel label : s.getStore().getLabelsList()) { if (label.getKey().equals(storeType.getLabelKey()) && label.getValue().equals(storeType.getLabelValue())) { diff --git a/src/main/java/org/tikv/common/region/TiRegion.java b/src/main/java/org/tikv/common/region/TiRegion.java index 3c0ce8e48d4..dc5aaaa0e1f 100644 --- a/src/main/java/org/tikv/common/region/TiRegion.java +++ b/src/main/java/org/tikv/common/region/TiRegion.java @@ -126,6 +126,10 @@ public Peer getNextReplica() { return getCurrentReplica(); } + public void SetReplicaIdx(int idx) { + replicaIdx = idx; + } + private boolean isLeader(Peer peer) { return getLeader().equals(peer); } From cc80429c6bfd488ca9259cce91622de9dc7c38b2 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Mon, 10 Apr 2023 20:13:46 +0800 Subject: [PATCH 2/6] fmt Signed-off-by: shiyuhang <1136742008@qq.com> --- src/main/java/org/tikv/common/region/RegionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index 9141b9a855b..e8b323f4307 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -231,7 +231,7 @@ public Pair getRegionStorePairByKey( region.SetReplicaIdx(0); Peer peer = region.getCurrentReplica(); store = getStoreById(peer.getStoreId(), backOffer); - while (!store.isReachable()){ + while (!store.isReachable()) { peer = region.getNextReplica(); store = getStoreById(peer.getStoreId(), backOffer); } From e510553603384345e08599af238aedd6f65e4e96 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Mon, 10 Apr 2023 20:30:23 +0800 Subject: [PATCH 3/6] add log Signed-off-by: shiyuhang <1136742008@qq.com> --- src/main/java/org/tikv/common/region/RegionManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index e8b323f4307..91d331abeb9 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -232,6 +232,7 @@ public Pair getRegionStorePairByKey( Peer peer = region.getCurrentReplica(); store = getStoreById(peer.getStoreId(), backOffer); while (!store.isReachable()) { + logger.info("Store is unreachable, try to get the next replica"); peer = region.getNextReplica(); store = getStoreById(peer.getStoreId(), backOffer); } From ef52f0ca9715d1ece3fe45d2ba5c85ef69401d79 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Thu, 13 Apr 2023 15:45:17 +0800 Subject: [PATCH 4/6] optimize Signed-off-by: shiyuhang <1136742008@qq.com> --- .../org/tikv/common/region/RegionManager.java | 15 +++++++++------ .../java/org/tikv/common/region/TiRegion.java | 6 +++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index 91d331abeb9..dd73a328068 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -228,13 +228,16 @@ public Pair getRegionStorePairByKey( TiStore store = null; if (storeType == TiStoreType.TiKV) { - region.SetReplicaIdx(0); - Peer peer = region.getCurrentReplica(); - store = getStoreById(peer.getStoreId(), backOffer); - while (!store.isReachable()) { - logger.info("Store is unreachable, try to get the next replica"); - peer = region.getNextReplica(); + // check from the first replica in case it recovers + for (int i = 0; i < region.getReplicaList().size(); i++) { + Peer peer = region.getReplicaList().get(i); store = getStoreById(peer.getStoreId(), backOffer); + if (store.isReachable()) { + // update replica index + region.setReplicaIdx(i); + break; + } + logger.info("Store is unreachable, try to get the replica,index: " + i); } } else { List tiflashStores = new ArrayList<>(); diff --git a/src/main/java/org/tikv/common/region/TiRegion.java b/src/main/java/org/tikv/common/region/TiRegion.java index dc5aaaa0e1f..9db3397c5ef 100644 --- a/src/main/java/org/tikv/common/region/TiRegion.java +++ b/src/main/java/org/tikv/common/region/TiRegion.java @@ -126,10 +126,14 @@ public Peer getNextReplica() { return getCurrentReplica(); } - public void SetReplicaIdx(int idx) { + public void setReplicaIdx(int idx) { replicaIdx = idx; } + public List getReplicaList() { + return replicaList; + } + private boolean isLeader(Peer peer) { return getLeader().equals(peer); } From 3827e9174819d2fffe30a76019802fa9ba1d8ca2 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Tue, 25 Apr 2023 16:29:13 +0800 Subject: [PATCH 5/6] optimize log Signed-off-by: shiyuhang <1136742008@qq.com> --- pom.xml | 2 +- src/main/java/org/tikv/common/region/RegionManager.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 2254b45bb60..2235c4d3cb1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.tikv tikv-client-java - 3.3.0-SNAPSHOT + 3.3.4-SNAPSHOT jar TiKV Java Client A Java Client for TiKV diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index dd73a328068..10ec02e9da6 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -229,15 +229,16 @@ public Pair getRegionStorePairByKey( TiStore store = null; if (storeType == TiStoreType.TiKV) { // check from the first replica in case it recovers - for (int i = 0; i < region.getReplicaList().size(); i++) { - Peer peer = region.getReplicaList().get(i); + List replicaList = region.getReplicaList(); + for (int i = 0; i < replicaList.size(); i++) { + Peer peer = replicaList.get(i); store = getStoreById(peer.getStoreId(), backOffer); if (store.isReachable()) { // update replica index region.setReplicaIdx(i); break; } - logger.info("Store is unreachable, try to get the replica,index: " + i); + logger.info("Store {} is unreachable, try to get the next replica", peer.getStoreId()); } } else { List tiflashStores = new ArrayList<>(); From 63c51d3eaa1655550bcd2950ec6933307d592c92 Mon Sep 17 00:00:00 2001 From: shiyuhang <1136742008@qq.com> Date: Thu, 27 Apr 2023 11:15:39 +0800 Subject: [PATCH 6/6] upadte comment Signed-off-by: shiyuhang <1136742008@qq.com> --- src/main/java/org/tikv/common/region/RegionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tikv/common/region/RegionManager.java b/src/main/java/org/tikv/common/region/RegionManager.java index 10ec02e9da6..129afaf9d50 100644 --- a/src/main/java/org/tikv/common/region/RegionManager.java +++ b/src/main/java/org/tikv/common/region/RegionManager.java @@ -234,7 +234,7 @@ public Pair getRegionStorePairByKey( Peer peer = replicaList.get(i); store = getStoreById(peer.getStoreId(), backOffer); if (store.isReachable()) { - // update replica index + // update replica's index region.setReplicaIdx(i); break; }