Github user aweisberg commented on a diff in the pull request:
https://github.com/apache/cassandra/pull/271#discussion_r220640121
--- Diff: src/java/org/apache/cassandra/locator/RangesAtEndpoint.java ---
@@ -25,40 +25,41 @@
import org.apache.cassandra.dht.Token;
import java.net.UnknownHostException;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collector;
-import java.util.stream.Collectors;
-import static
org.apache.cassandra.locator.ReplicaCollection.Mutable.Conflict.*;
+import static
org.apache.cassandra.locator.ReplicaCollection.Builder.Conflict.*;
/**
* A ReplicaCollection for Ranges occurring at an endpoint. All Replica
will be for the same endpoint,
* and must be unique Ranges (though overlapping ranges are presently
permitted, these should probably not be permitted to occur)
*/
public class RangesAtEndpoint extends
AbstractReplicaCollection<RangesAtEndpoint>
{
- private static final Map<Range<Token>, Replica> EMPTY_MAP =
Collections.unmodifiableMap(new LinkedHashMap<>());
+ private static ReplicaMap<Range<Token>> rangeMap(ReplicaList list) {
return new ReplicaMap<>(list, Replica::range); }
+ private static final ReplicaMap<Range<Token>> EMPTY_MAP =
rangeMap(EMPTY_LIST);
private final InetAddressAndPort endpoint;
- private volatile Map<Range<Token>, Replica> byRange;
- private volatile RangesAtEndpoint fullRanges;
- private volatile RangesAtEndpoint transRanges;
- private RangesAtEndpoint(InetAddressAndPort endpoint, List<Replica>
list, boolean isSnapshot)
+ // volatile not needed, as all of these caching collections have final
members,
+ // besides (transitively) those that cache objects that themselves
have only final members
+ private ReplicaMap<Range<Token>> byRange;
+ private RangesAtEndpoint onlyFull;
+ private RangesAtEndpoint onlyTransient;
+
+ private RangesAtEndpoint(InetAddressAndPort endpoint, ReplicaList list)
--- End diff --
Unused
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]