diff options
Diffstat (limited to 'src/remake/catchup.rs')
| -rw-r--r-- | src/remake/catchup.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/remake/catchup.rs b/src/remake/catchup.rs index 6ef8121..a3443ba 100644 --- a/src/remake/catchup.rs +++ b/src/remake/catchup.rs @@ -522,7 +522,9 @@ fn prepare( }; // The epoch that followed ours records (per actor) which of our changes it took. - // Snapshots carry earlier epochs' metadata forward, so this works across any gap. + // Snapshots carry earlier epochs' metadata forward while a node can replay through + // it (`snapshot::left_out`), so this works across any gap within the window; beyond + // it, the metadata missing quarantines as the window would. let next = snapshot::read_epoch_metadata(copy, previous.generation + 1) .ok() .filter(|next| next.previous == previous); @@ -531,6 +533,8 @@ fn prepare( // A strict remake of a swarm strict already isn't followed: there its registry, // policy and bans change by its users' signatures, not by a majority of members // (`vote::strict_taken`). Strict as our document is, or once a remake since made it so. + // A strict remake's metadata is carried forward for good (`snapshot::left_out`), so + // this sees every one since our epoch, however far behind. let mut strict = crate::access::policy::of(old).strict(); for generation in previous.generation + 1..=target.generation { if let Ok(epoch) = snapshot::read_epoch_metadata(copy, generation) |
