diff --git a/libs/sk_ps_discovery/src/lib.rs b/libs/sk_ps_discovery/src/lib.rs index 80244ea246..069d411af9 100644 --- a/libs/sk_ps_discovery/src/lib.rs +++ b/libs/sk_ps_discovery/src/lib.rs @@ -20,7 +20,10 @@ pub struct World { attachments: BTreeMap, quiesced_timelines: BTreeMap, - + // ^ + // either a timeline is in quiesced_timelines + // or it is in commit_lsns + remote_consistent_lsns + // v commit_lsns: BTreeMap, remote_consistent_lsns: BTreeMap, } @@ -56,6 +59,9 @@ pub struct RemoteConsistentLsnAdv { impl World { fn check_invariants(&self) { + if !cfg!(debug_assertions) { + return; + } // quiescing { let quiesced_timelines: HashSet = diff --git a/libs/sk_ps_discovery/src/tests.rs b/libs/sk_ps_discovery/src/tests.rs index d021e0133f..df9c3e149e 100644 --- a/libs/sk_ps_discovery/src/tests.rs +++ b/libs/sk_ps_discovery/src/tests.rs @@ -160,6 +160,12 @@ fn quiescing_timeline_catchup() { }); world.handle_commit_lsn_advancement(ttid, Lsn(23)); - let advs = world.get_commit_lsn_advertisements(); - validate_advertisements(advs, vec![(ps_id, vec![(ttid, Lsn(23))])]); + assert!(world.quiesced_timelines.is_empty()); + + world.handle_remote_consistent_lsn_advertisement(RemoteConsistentLsnAdv { + attachment: tenant_shard_attachment_id.timeline_attachment_id(timeline_id), + remote_consistent_lsn: Lsn(23), + }); + + assert!(world.quiesced_timelines.contains_key(&ttid)); }