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]