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]