From 3a848c0c1d28df9d6c112a9348201b70cfc34cd5 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 18 Apr 2016 13:16:12 +0300 Subject: [PATCH] Fixed unnecessary slots migration in cluster mode. #475 --- .../org/redisson/cluster/ClusterConnectionManager.java | 6 ++++-- src/main/java/org/redisson/cluster/ClusterPartition.java | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index 7ac9a601e..12b8518d6 100644 --- a/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -485,10 +485,12 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { List currentPartitions = new ArrayList(lastPartitions.values()); for (ClusterPartition currentPartition : currentPartitions) { for (ClusterPartition newPartition : newPartitions) { - if (!currentPartition.getNodeId().equals(newPartition.getNodeId())) { + if (!currentPartition.getNodeId().equals(newPartition.getNodeId()) + // skip master change case + || !currentPartition.getMasterAddr().equals(newPartition.getMasterAddr())) { continue; } - + Set addedSlots = new HashSet(newPartition.getSlotRanges()); addedSlots.removeAll(currentPartition.getSlotRanges()); MasterSlaveEntry entry = getEntry(currentPartition.getSlotRanges().iterator().next()); diff --git a/src/main/java/org/redisson/cluster/ClusterPartition.java b/src/main/java/org/redisson/cluster/ClusterPartition.java index f6486bd9f..ace54a42d 100644 --- a/src/main/java/org/redisson/cluster/ClusterPartition.java +++ b/src/main/java/org/redisson/cluster/ClusterPartition.java @@ -93,4 +93,11 @@ public class ClusterPartition { failedSlaves.remove(uri); } + @Override + public String toString() { + return "ClusterPartition [nodeId=" + nodeId + ", masterFail=" + masterFail + ", masterAddress=" + masterAddress + + ", slaveAddresses=" + slaveAddresses + ", failedSlaves=" + failedSlaves + ", slotRanges=" + slotRanges + + "]"; + } + }