diff --git a/src/java/org/apache/cassandra/locator/TokenMetadata.java b/src/java/org/apache/cassandra/locator/TokenMetadata.java index f1d0f9bb8ab9..1a1bef2f2b3d 100644 --- a/src/java/org/apache/cassandra/locator/TokenMetadata.java +++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java @@ -895,11 +895,13 @@ private static PendingRangeMaps calculatePendingRanges(AbstractReplicationStrate { EndpointsForRange currentReplicas = strategy.calculateNaturalReplicas(range.right, metadata); EndpointsForRange newReplicas = strategy.calculateNaturalReplicas(range.right, allLeftMetadata); - for (Replica replica : newReplicas) + for (Replica newReplica : newReplicas) { - if (currentReplicas.endpoints().contains(replica.endpoint())) + if (currentReplicas.endpoints().contains(newReplica.endpoint())) continue; - newPendingRanges.addPendingRange(range, replica); + + for (Replica pendingReplica : newReplica.subtractSameReplication(addressRanges.get(newReplica.endpoint()))) + newPendingRanges.addPendingRange(range, pendingReplica); } }