This is an automated email from the ASF dual-hosted git repository.

ifesdjeen pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a8916a18 Startup sequence improvements
a8916a18 is described below

commit a8916a18a012063f4da74aaccd39f0b828c99da0
Author: Alex Petrov <[email protected]>
AuthorDate: Thu Jul 31 09:43:49 2025 +0200

    Startup sequence improvements
    
    Patch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20519
---
 accord-core/src/main/java/accord/api/ConfigurationService.java     | 4 +++-
 .../src/main/java/accord/impl/AbstractConfigurationService.java    | 1 +
 accord-core/src/main/java/accord/topology/TopologyManager.java     | 7 +++----
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/accord-core/src/main/java/accord/api/ConfigurationService.java 
b/accord-core/src/main/java/accord/api/ConfigurationService.java
index 90d53468..636f3b8a 100644
--- a/accord-core/src/main/java/accord/api/ConfigurationService.java
+++ b/accord-core/src/main/java/accord/api/ConfigurationService.java
@@ -167,7 +167,9 @@ public interface ConfigurationService
 
     default long currentEpoch()
     {
-        return currentTopology().epoch();
+        Topology topology = currentTopology();
+        if (topology == null) return 0;
+        return topology.epoch();
     }
 
     /**
diff --git 
a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java 
b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
index 4781c337..b3fd3fb0 100644
--- a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
+++ b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
@@ -323,6 +323,7 @@ public abstract class 
AbstractConfigurationService<EpochState extends AbstractCo
     @Override
     public Topology currentTopology()
     {
+        if (isEmpty()) return null;
         return epochs.topologyForLastReceived();
     }
 
diff --git a/accord-core/src/main/java/accord/topology/TopologyManager.java 
b/accord-core/src/main/java/accord/topology/TopologyManager.java
index e12d6b3a..71682fdb 100644
--- a/accord-core/src/main/java/accord/topology/TopologyManager.java
+++ b/accord-core/src/main/java/accord/topology/TopologyManager.java
@@ -264,7 +264,6 @@ public class TopologyManager
             Ranges closed = Ranges.EMPTY, retired = Ranges.EMPTY;
         }
 
-        private static final Epochs EMPTY = new Epochs(new EpochState[0], 
Collections.emptyList(), Collections.emptyList(), -1);
         private final long currentEpoch;
         private final long firstNonEmptyEpoch;
         // Epochs are sorted in _descending_ order
@@ -681,7 +680,7 @@ public class TopologyManager
         this.self = self;
         this.time = time;
         this.timeouts = timeouts;
-        this.epochs = Epochs.EMPTY;
+        this.epochs = new Epochs(new EpochState[0], new ArrayList<>(), new 
ArrayList<>(), -1);;
     }
 
     public EpochsSnapshot epochsSnapshot()
@@ -722,7 +721,7 @@ public class TopologyManager
         synchronized (this)
         {
             prev = epochs;
-            Invariants.requireArgument(topology.epoch == prev.nextEpoch() || 
epochs == Epochs.EMPTY,
+            Invariants.requireArgument(topology.epoch == prev.nextEpoch() || 
epochs.epochs.length == 0,
                                        "Expected topology update %d to be %d", 
topology.epoch, prev.nextEpoch());
             EpochState[] nextEpochs = new EpochState[prev.epochs.length + 1];
             List<Epochs.Notifications> pending = new ArrayList<>(prev.pending);
@@ -859,7 +858,7 @@ public class TopologyManager
 
     public boolean isEmpty()
     {
-        return epochs == Epochs.EMPTY;
+        return epochs.epochs.length == 0;
     }
 
     public long epoch()


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

Reply via email to