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

dcapwell 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 2ad55e03 CEP-15 (C*) When a host replacement happens don't loose the 
peer mapping right away (#60)
2ad55e03 is described below

commit 2ad55e03c43ce074cdf5e36cfa14cb4278c2dc0f
Author: dcapwell <[email protected]>
AuthorDate: Wed Aug 16 11:47:52 2023 -0700

    CEP-15 (C*) When a host replacement happens don't loose the peer mapping 
right away (#60)
    
    
    patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-18764
---
 accord-core/src/main/java/accord/api/ConfigurationService.java      | 2 +-
 .../src/main/java/accord/impl/AbstractConfigurationService.java     | 6 +++---
 accord-core/src/main/java/accord/local/Node.java                    | 2 +-
 accord-core/src/main/java/accord/utils/async/AsyncResults.java      | 6 ++++++
 .../src/test/java/accord/burn/BurnTestConfigurationService.java     | 2 +-
 .../src/test/java/accord/impl/AbstractConfigurationServiceTest.java | 6 +++---
 .../src/test/java/accord/impl/mock/MockConfigurationService.java    | 2 +-
 .../src/main/java/accord/maelstrom/SimpleConfigService.java         | 2 +-
 8 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/accord-core/src/main/java/accord/api/ConfigurationService.java 
b/accord-core/src/main/java/accord/api/ConfigurationService.java
index 4e6943fc..6ad9f205 100644
--- a/accord-core/src/main/java/accord/api/ConfigurationService.java
+++ b/accord-core/src/main/java/accord/api/ConfigurationService.java
@@ -173,7 +173,7 @@ public interface ConfigurationService
      * On invocation the system is not necessarily ready to process the epoch, 
and the BootstrapReady parameter
      * provides indications of when the bootstrap has completed various phases 
of setup.
      */
-    void acknowledgeEpoch(EpochReady ready);
+    void acknowledgeEpoch(EpochReady ready, boolean startSync);
 
     void reportEpochClosed(Ranges ranges, long epoch);
 
diff --git 
a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java 
b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
index 7132f8d1..d8ebab8f 100644
--- a/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
+++ b/accord-core/src/main/java/accord/impl/AbstractConfigurationService.java
@@ -233,10 +233,10 @@ public abstract class 
AbstractConfigurationService<EpochState extends AbstractCo
         fetchTopologyInternal(epoch);
     }
 
-    protected abstract void localSyncComplete(Topology topology);
+    protected abstract void localSyncComplete(Topology topology, boolean 
startSync);
 
     @Override
-    public void acknowledgeEpoch(EpochReady ready)
+    public void acknowledgeEpoch(EpochReady ready, boolean startSync)
     {
         ready.metadata.addCallback(() -> {
             synchronized (AbstractConfigurationService.this)
@@ -247,7 +247,7 @@ public abstract class 
AbstractConfigurationService<EpochState extends AbstractCo
         ready.coordination.addCallback(() ->  {
             synchronized (AbstractConfigurationService.this)
             {
-                localSyncComplete(epochs.getOrCreate(ready.epoch).topology);
+                localSyncComplete(epochs.getOrCreate(ready.epoch).topology, 
startSync);
             }
         });
     }
diff --git a/accord-core/src/main/java/accord/local/Node.java 
b/accord-core/src/main/java/accord/local/Node.java
index 48bf5f51..7cf84dfe 100644
--- a/accord-core/src/main/java/accord/local/Node.java
+++ b/accord-core/src/main/java/accord/local/Node.java
@@ -209,7 +209,7 @@ public class Node implements ConfigurationService.Listener, 
NodeTimeService
             return AsyncResults.success(null);
         EpochReady ready = onTopologyUpdateInternal(topology, startSync);
         ready.coordination.addCallback(() -> 
this.topology.onEpochSyncComplete(id, topology.epoch()));
-        configService.acknowledgeEpoch(ready);
+        configService.acknowledgeEpoch(ready, startSync);
         return ready.coordination;
     }
 
diff --git a/accord-core/src/main/java/accord/utils/async/AsyncResults.java 
b/accord-core/src/main/java/accord/utils/async/AsyncResults.java
index 98e5ccf0..dfa7fe08 100644
--- a/accord-core/src/main/java/accord/utils/async/AsyncResults.java
+++ b/accord-core/src/main/java/accord/utils/async/AsyncResults.java
@@ -201,6 +201,12 @@ public class AsyncResults
                 throw new IllegalStateException("Result succeeded");
             return result.failure;
         }
+
+        @Override
+        public String toString()
+        {
+            return getClass().getSimpleName() + "{status=" + (isDone() ? 
isSuccess() ? "success" : "failure" : "pending") + "}";
+        }
     }
 
     static class Chain<V> extends AbstractResult<V>
diff --git 
a/accord-core/src/test/java/accord/burn/BurnTestConfigurationService.java 
b/accord-core/src/test/java/accord/burn/BurnTestConfigurationService.java
index b872a176..4c9ce6c0 100644
--- a/accord-core/src/test/java/accord/burn/BurnTestConfigurationService.java
+++ b/accord-core/src/test/java/accord/burn/BurnTestConfigurationService.java
@@ -158,7 +158,7 @@ public class BurnTestConfigurationService extends 
AbstractConfigurationService.M
     }
 
     @Override
-    protected void localSyncComplete(Topology topology)
+    protected void localSyncComplete(Topology topology, boolean startSync)
     {
         topologyUpdates.syncComplete(lookup.apply(localId), topology.nodes(), 
topology.epoch());
     }
diff --git 
a/accord-core/src/test/java/accord/impl/AbstractConfigurationServiceTest.java 
b/accord-core/src/test/java/accord/impl/AbstractConfigurationServiceTest.java
index b17fa3bf..f4829f0e 100644
--- 
a/accord-core/src/test/java/accord/impl/AbstractConfigurationServiceTest.java
+++ 
b/accord-core/src/test/java/accord/impl/AbstractConfigurationServiceTest.java
@@ -66,7 +66,7 @@ public class AbstractConfigurationServiceTest
             if (topologies.put(topology.epoch(), topology) != null)
                 Assertions.fail("Received topology twice for epoch " + 
topology.epoch());
             if (ackTopologies)
-                parent.acknowledgeEpoch(EpochReady.done(topology.epoch()));
+                parent.acknowledgeEpoch(EpochReady.done(topology.epoch()), 
true);
             return AsyncResults.success(null);
         }
 
@@ -149,7 +149,7 @@ public class AbstractConfigurationServiceTest
         }
 
         @Override
-        protected void localSyncComplete(Topology topology)
+        protected void localSyncComplete(Topology topology, boolean startSync)
         {
             if (!syncStarted.add(topology.epoch()))
                 Assertions.fail("Sync started multiple times for " + 
topology.epoch());
@@ -158,7 +158,7 @@ public class AbstractConfigurationServiceTest
         @Override
         protected void topologyUpdatePostListenerNotify(Topology topology)
         {
-            acknowledgeEpoch(EpochReady.done(topology.epoch()));
+            acknowledgeEpoch(EpochReady.done(topology.epoch()), true);
         }
 
         @Override
diff --git 
a/accord-core/src/test/java/accord/impl/mock/MockConfigurationService.java 
b/accord-core/src/test/java/accord/impl/mock/MockConfigurationService.java
index e7a0b3c6..fbcd107d 100644
--- a/accord-core/src/test/java/accord/impl/mock/MockConfigurationService.java
+++ b/accord-core/src/test/java/accord/impl/mock/MockConfigurationService.java
@@ -83,7 +83,7 @@ public class MockConfigurationService implements 
TestableConfigurationService
     }
 
     @Override
-    public synchronized void acknowledgeEpoch(EpochReady epoch)
+    public synchronized void acknowledgeEpoch(EpochReady epoch, boolean 
startSync)
     {
         Assertions.assertFalse(acks.containsKey(epoch.epoch));
         acks.put(epoch.epoch, epoch);
diff --git 
a/accord-maelstrom/src/main/java/accord/maelstrom/SimpleConfigService.java 
b/accord-maelstrom/src/main/java/accord/maelstrom/SimpleConfigService.java
index f307a495..368b88bb 100644
--- a/accord-maelstrom/src/main/java/accord/maelstrom/SimpleConfigService.java
+++ b/accord-maelstrom/src/main/java/accord/maelstrom/SimpleConfigService.java
@@ -56,7 +56,7 @@ public class SimpleConfigService implements 
ConfigurationService
     }
 
     @Override
-    public void acknowledgeEpoch(EpochReady ready)
+    public void acknowledgeEpoch(EpochReady ready, boolean startSync)
     {
     }
 


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

Reply via email to