This is an automated email from the ASF dual-hosted git repository. ifesdjeen pushed a commit to branch CASSANDRA-19944-persistent-fields in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git
commit e7744d0d6ce882dad855f969e19196289823beeb Author: Benedict Elliott Smith <bened...@apache.org> AuthorDate: Fri Sep 20 12:09:37 2024 +0100 temporary fix for invalid use of Sets.filter --- .../coordinate/tracking/AbstractTracker.java | 2 +- .../src/main/java/accord/topology/Topologies.java | 41 ++++++++++++++-------- .../src/main/java/accord/topology/Topology.java | 5 --- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/accord-core/src/main/java/accord/coordinate/tracking/AbstractTracker.java b/accord-core/src/main/java/accord/coordinate/tracking/AbstractTracker.java index e58f3c67..183b4879 100644 --- a/accord-core/src/main/java/accord/coordinate/tracking/AbstractTracker.java +++ b/accord-core/src/main/java/accord/coordinate/tracking/AbstractTracker.java @@ -180,7 +180,7 @@ public abstract class AbstractTracker<ST extends ShardTracker> return topologies.nodes(); } - public Set<Id> nonStaleNodes() + public Collection<Id> nonStaleNodes() { return topologies.nonStaleNodes(); } diff --git a/accord-core/src/main/java/accord/topology/Topologies.java b/accord-core/src/main/java/accord/topology/Topologies.java index 95fce506..91a0d7ce 100644 --- a/accord-core/src/main/java/accord/topology/Topologies.java +++ b/accord-core/src/main/java/accord/topology/Topologies.java @@ -18,11 +18,15 @@ package accord.topology; +import java.util.AbstractCollection; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.Set; +import com.google.common.collect.Iterators; import com.google.common.collect.Sets; import accord.api.TopologySorter; @@ -74,7 +78,29 @@ public interface Topologies extends TopologySorter // note this can be expensive to evaluate SortedList<Id> nodes(); - Set<Node.Id> nonStaleNodes(); + default Collection<Node.Id> nonStaleNodes() + { + Topology currentTopology = current(); + Set<Id> staleIds = currentTopology.staleIds(); + SortedList<Id> nodes = nodes(); + if (staleIds.isEmpty()) + return nodes; + + return new AbstractCollection<>() + { + @Override + public Iterator<Id> iterator() + { + return Iterators.filter(nodes.iterator(), id -> !staleIds.contains(id)); + } + + @Override + public int size() + { + return Iterators.size(iterator()); + } + }; + } int estimateUniqueNodes(); @@ -216,12 +242,6 @@ public interface Topologies extends TopologySorter return topology.nodes(); } - @Override - public Set<Node.Id> nonStaleNodes() - { - return topology.nonStaleNodes(); - } - @Override public int estimateUniqueNodes() { @@ -402,13 +422,6 @@ public interface Topologies extends TopologySorter return result; } - @Override - public Set<Node.Id> nonStaleNodes() - { - Topology currentTopology = current(); - return Sets.filter(nodes(), id -> !currentTopology.staleIds().contains(id)); - } - @Override public Ranges computeRangesForNode(Id node) { diff --git a/accord-core/src/main/java/accord/topology/Topology.java b/accord-core/src/main/java/accord/topology/Topology.java index f1fc988f..9f639f83 100644 --- a/accord-core/src/main/java/accord/topology/Topology.java +++ b/accord-core/src/main/java/accord/topology/Topology.java @@ -558,11 +558,6 @@ public class Topology return nodeIds; } - public Set<Id> nonStaleNodes() - { - return Sets.filter(nodes(), id -> !staleIds.contains(id)); - } - public Ranges ranges() { return subsetOfRanges; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org