diff --git a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index 3e0880837..1d7833b85 100644 --- a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -846,11 +846,13 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { CompletableFuture> ipsFuture = serviceManager.resolveAll(clusterNodeInfo.getAddress()); CompletableFuture f = ipsFuture.thenAccept(addresses -> { + int index = 0; if (addresses.size() > 1) { addresses.sort(Comparator.comparing(RedisURI::getHost)); - Collections.shuffle(addresses, new Random(serviceManager.getId().hashCode())); + Random r = new Random(serviceManager.getId().hashCode()); + index = r.nextInt(addresses.size()); } - RedisURI address = addresses.get(0); + RedisURI address = addresses.get(index); if (clusterNodeInfo.containsFlag(Flag.SLAVE)) { ClusterPartition masterPartition = partitions.computeIfAbsent(masterId, k -> new ClusterPartition(masterId));