Github user ifesdjeen commented on a diff in the pull request:

    https://github.com/apache/cassandra/pull/224#discussion_r197126709
  
    --- Diff: src/java/org/apache/cassandra/dht/RangeStreamer.java ---
    @@ -259,36 +266,36 @@ private boolean useStrictSourcesForRanges(String 
keyspaceName)
          *
          * @throws java.lang.IllegalStateException when there is no source to 
get data streamed, or more than 1 source found.
          */
    -    private Multimap<Range<Token>, InetAddressAndPort> 
getAllRangesWithStrictSourcesFor(String keyspace, Collection<Range<Token>> 
desiredRanges)
    +    private ReplicaMultimap<Range<Token>, ReplicaList> 
getAllRangesWithStrictSourcesFor(String keyspace, Iterable<Range<Token>> 
desiredRanges)
         {
             assert tokens != null;
             AbstractReplicationStrategy strat = 
Keyspace.open(keyspace).getReplicationStrategy();
     
             // Active ranges
             TokenMetadata metadataClone = metadata.cloneOnlyTokenMap();
    -        Multimap<Range<Token>, InetAddressAndPort> addressRanges = 
strat.getRangeAddresses(metadataClone);
    +        ReplicaMultimap<Range<Token>, ReplicaSet> addressRanges = 
strat.getRangeAddresses(metadataClone);
     
             // Pending ranges
             metadataClone.updateNormalTokens(tokens, address);
    -        Multimap<Range<Token>, InetAddressAndPort> pendingRangeAddresses = 
strat.getRangeAddresses(metadataClone);
    +        ReplicaMultimap<Range<Token>, ReplicaSet> pendingRangeAddresses = 
strat.getRangeAddresses(metadataClone);
     
             // Collects the source that will have its range moved to the new 
node
    -        Multimap<Range<Token>, InetAddressAndPort> rangeSources = 
ArrayListMultimap.create();
    +        ReplicaMultimap<Range<Token>, ReplicaList> rangeSources = 
ReplicaMultimap.list();
     
             for (Range<Token> desiredRange : desiredRanges)
             {
    -            for (Map.Entry<Range<Token>, Collection<InetAddressAndPort>> 
preEntry : addressRanges.asMap().entrySet())
    +            for (Map.Entry<Range<Token>, ReplicaSet> preEntry : 
addressRanges.asMap().entrySet())
                 {
                     if (preEntry.getKey().contains(desiredRange))
                     {
    -                    Set<InetAddressAndPort> oldEndpoints = 
Sets.newHashSet(preEntry.getValue());
    --- End diff --
    
    Here, we're creating a new `Set`, then removing things from it. We could do 
an equivalent (and avoid copy of `newEndpoints`) by just running `filter` on 
`preEntry.getValue()`.


---

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

Reply via email to