From 0d4b27bcd38e3d6bc1317e378d05cae6ac83103f Mon Sep 17 00:00:00 2001 From: Liangliang Gu Date: Thu, 18 Feb 2021 16:35:40 +0800 Subject: [PATCH] update function getNextFollower (#125) Signed-off-by: marsishandsome --- src/main/java/org/tikv/common/region/TiRegion.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/tikv/common/region/TiRegion.java b/src/main/java/org/tikv/common/region/TiRegion.java index f2969bf80e..0171ffad07 100644 --- a/src/main/java/org/tikv/common/region/TiRegion.java +++ b/src/main/java/org/tikv/common/region/TiRegion.java @@ -22,6 +22,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Random; import java.util.Set; import org.tikv.common.TiConfiguration.KVMode; import org.tikv.common.codec.Codec.BytesCodec; @@ -75,7 +76,7 @@ public class TiRegion implements Serializable { if (isReplicaRead && meta.getPeersCount() > 0) { // try to get first follower try { - getNextFollower(); + chooseRandomFollower(); } catch (Exception ignore) { // ignore } @@ -117,17 +118,17 @@ public class TiRegion implements Serializable { return meta.getPeers(followerIdx); } - public Peer getNextFollower() { + private void chooseRandomFollower() { int cnt = meta.getPeersCount(); + followerIdx = new Random().nextInt(cnt); for (int retry = cnt - 1; retry > 0; retry--) { followerIdx = (followerIdx + 1) % cnt; Peer cur = meta.getPeers(followerIdx); if (cur.getIsLearner()) { continue; } - return cur; + return; } - return leader; } public List getLearnerList() {