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 f9827e73 Mark min epoch - 1 as truncated, i.e. restore previous 
truncated state
f9827e73 is described below

commit f9827e7343365847010bd25b21da69b1f76bdba4
Author: Alex Petrov <oleksandr.pet...@gmail.com>
AuthorDate: Tue May 27 16:35:35 2025 +0200

    Mark min epoch - 1 as truncated, i.e. restore previous truncated state
    
    Patch by Alex Petrov; reviewed by Benedict Elliott Smith for 
CASSANDRA-20675.
---
 .../main/java/accord/impl/AbstractConfigurationService.java  | 12 ++++++++++++
 accord-core/src/main/java/accord/local/CommandStores.java    |  8 ++++++++
 2 files changed, 20 insertions(+)

diff --git 
a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java 
b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
index 4fc927f0..0b5e45b2 100644
--- a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
+++ b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
@@ -258,6 +258,13 @@ public abstract class 
AbstractConfigurationService<EpochState extends AbstractCo
             return getOrCreate(epoch).acknowledged;
         }
 
+        public synchronized void unsafeMarkTruncated()
+        {
+            long minEpoch = minEpoch();
+            if (minEpoch > 0)
+                lastTruncated = minEpoch - 1;
+        }
+
         public synchronized void truncateUntil(long epoch)
         {
             Invariants.requireArgument(epoch <= maxEpoch(), "epoch %d > %d", 
epoch, maxEpoch());
@@ -376,6 +383,11 @@ public abstract class 
AbstractConfigurationService<EpochState extends AbstractCo
         topologyUpdatePostListenerNotify(topology);
     }
 
+    public void unsafeMarkTruncated()
+    {
+        epochs.unsafeMarkTruncated();
+    }
+
     public void reportTopology(Topology topology)
     {
         reportTopology(topology, false, true);
diff --git a/accord-core/src/main/java/accord/local/CommandStores.java 
b/accord-core/src/main/java/accord/local/CommandStores.java
index 8fc0a93b..8e12ca1f 100644
--- a/accord-core/src/main/java/accord/local/CommandStores.java
+++ b/accord-core/src/main/java/accord/local/CommandStores.java
@@ -484,6 +484,14 @@ public abstract class CommandStores
         return current.local;
     }
 
+    public void forEach(BiConsumer<CommandStore, RangesForEpoch> forEach)
+    {
+        for (ShardHolder shard : current.shards)
+        {
+            forEach.accept(shard.store, shard.ranges);
+        }
+    }
+
     public DataStore dataStore()
     {
         return supplier.store;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to