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

Reply via email to