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]