adelapena commented on a change in pull request #870:
URL: https://github.com/apache/cassandra/pull/870#discussion_r568576743



##########
File path: src/java/org/apache/cassandra/dht/RangeStreamer.java
##########
@@ -353,9 +361,27 @@ public void addRanges(String keyspaceName, 
ReplicaCollection<?> replicas)
      */
     private boolean useStrictSourcesForRanges(AbstractReplicationStrategy 
strat)
     {
-        return useStrictConsistency
-                && tokens != null
-                && metadata.getSizeOfAllEndpoints() != 
strat.getReplicationFactor().allReplicas;
+        boolean res = useStrictConsistency && tokens != null;
+        
+        if (res)
+        {
+            int nodes = 0;
+
+            if (strat instanceof NetworkTopologyStrategy)
+            {
+                ImmutableMultimap<String, InetAddressAndPort> dc2Nodes = 
metadata.getDC2AllEndpoints(snitch);
+
+                NetworkTopologyStrategy ntps = (NetworkTopologyStrategy) strat;
+                for (String dc : dc2Nodes.keySet())
+                    nodes += ntps.getReplicationFactor(dc).allReplicas > 0 ? 
dc2Nodes.get(dc).size() : 0;
+            }
+            else
+                nodes = metadata.getSizeOfAllEndpoints();
+    
+            res = res && nodes > strat.getReplicationFactor().allReplicas;

Review comment:
       Since the function is not in the hot path I'd prefer readability (if the 
the early return is more readable, which is debatable), but I'm not against the 
current approach if you prefer it.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to