From 5fe08e87582cfe8d46c3b4832da9e0fb49042d0f Mon Sep 17 00:00:00 2001 From: marsishandsome Date: Fri, 5 Nov 2021 11:17:25 +0800 Subject: [PATCH] shuffle PD addresses so that clients call getMembers from different PD Signed-off-by: marsishandsome --- src/main/java/org/tikv/common/PDClient.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/tikv/common/PDClient.java b/src/main/java/org/tikv/common/PDClient.java index f1e2f7bbbce..b639a4b9519 100644 --- a/src/main/java/org/tikv/common/PDClient.java +++ b/src/main/java/org/tikv/common/PDClient.java @@ -35,6 +35,8 @@ import io.prometheus.client.Histogram; import java.net.URI; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -559,7 +561,9 @@ protected PDStub getAsyncStub() { private void initCluster() { GetMembersResponse resp = null; - List pdAddrs = getConf().getPdAddrs(); + List pdAddrs = new ArrayList<>(getConf().getPdAddrs()); + // shuffle PD addresses so that clients call getMembers from different PD + Collections.shuffle(pdAddrs); this.pdAddrs = pdAddrs; this.etcdClient = Client.builder()