summaryrefslogtreecommitdiffstats
path: root/src/document/replica.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-25 20:33:40 +0100
committertv <tv@krebsco.de>2026-10-25 20:33:40 +0100
commit944bd3a9da9c14153247b483ba2cfe1457fc84d2 (patch)
tree447a444cbef42e4911fffd53fb2acfd961239ee4 /src/document/replica.rs
parent7a3b0f46b1c899305cdfe8b06e2a64e9748d5b42 (diff)
late messages don't flip peer's epoch back
Diffstat (limited to 'src/document/replica.rs')
-rw-r--r--src/document/replica.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/document/replica.rs b/src/document/replica.rs
index e24f93c..db47223 100644
--- a/src/document/replica.rs
+++ b/src/document/replica.rs
@@ -86,6 +86,9 @@ impl fmt::Debug for Epoch {
/// [`Replica::heads`].
pub struct Replica {
pub epoch: Epoch,
+ /// How many times this node changed epoch (switch, rejoin, abandoned rejoin) in this
+ /// run: messages carry it, so a late one can't flip a peer's view of our epoch back.
+ pub epoch_seq: u32,
pub doc: AutoCommit,
heads: Vec<ChangeHash>,
}
@@ -94,6 +97,7 @@ impl Replica {
pub fn new(epoch: Epoch, doc: AutoCommit) -> Self {
let mut replica = Self {
epoch,
+ epoch_seq: 0,
doc,
heads: Vec::new(),
};