From 607f341e24aba3957d838aeaf369ddffe92dda3d Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Fri, 4 Aug 2023 14:55:25 -0400 Subject: [PATCH] more assertions Signed-off-by: Alex Chi Z --- .../src/tenant/timeline/layer_manager.rs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pageserver/src/tenant/timeline/layer_manager.rs b/pageserver/src/tenant/timeline/layer_manager.rs index 5faf107d61..f7ce74fc53 100644 --- a/pageserver/src/tenant/timeline/layer_manager.rs +++ b/pageserver/src/tenant/timeline/layer_manager.rs @@ -224,6 +224,11 @@ impl LayerManagerWriteGuard { on_disk_layers: Vec>, next_open_layer_at: Lsn, ) { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); + self.layer_manager .initialize_update(|mut layer_map| { let mut updates = layer_map.batch_update(); @@ -252,6 +257,11 @@ impl LayerManagerWriteGuard { corrupted_local_layers: Vec>, remote_layers: Vec>, ) { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); + self.layer_manager .initialize_update(|mut layer_map| { let mut updates = layer_map.batch_update(); @@ -278,6 +288,11 @@ impl LayerManagerWriteGuard { timeline_id: TimelineId, tenant_id: TenantId, ) -> Result> { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); + ensure!(lsn.is_aligned()); ensure!( @@ -334,6 +349,11 @@ impl LayerManagerWriteGuard { Lsn(last_record_lsn): Lsn, last_freeze_at: &AtomicLsn, ) { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); + let end_lsn = Lsn(last_record_lsn + 1); if let Some(open_layer) = &self.snapshot.layer_map.open_layer { @@ -359,6 +379,10 @@ impl LayerManagerWriteGuard { /// Add image layers to the layer map, called from `create_image_layers`. pub(crate) async fn track_new_image_layers(&mut self, image_layers: Vec) { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); self.layer_manager .update(|mut layer_map| { let mut updates: BatchedUpdates<'_> = layer_map.batch_update(); @@ -382,6 +406,10 @@ impl LayerManagerWriteGuard { delta_layer: Option, frozen_layer_for_check: &Arc, ) { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); self.layer_manager .update(|mut layer_map| { let l = layer_map.frozen_layers.pop_front(); @@ -414,6 +442,10 @@ impl LayerManagerWriteGuard { compact_to: Vec>, metrics: &TimelineMetrics, ) -> Result<()> { + assert!( + self.pseudo_lock.is_right(), + "should use `modify` guard for this function." + ); let compact_from = self .layer_manager .update(|mut layer_map| { @@ -459,6 +491,10 @@ impl LayerManagerWriteGuard { gc_layers: Vec>, metrics: &TimelineMetrics, ) -> Result<()> { + assert!( + self.pseudo_lock.is_left(), + "should use `write` guard for this function." + ); self.layer_manager .update(|mut layer_map| { let mut updates = layer_map.batch_update();