diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 05b8ab18af..7896b50cc7 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -3416,10 +3416,6 @@ impl Timeline { } else if LayerMap::is_l0(l.layer_desc()) { return Err(CompactionError::Other(anyhow!("compaction generates a L0 layer file as output, which will cause infinite compaction."))); } else { - // update the timeline's physical size - self.metrics - .resident_physical_size_gauge - .add(l.layer_desc().file_size); insert_layers.push(l); } } @@ -3433,7 +3429,12 @@ impl Timeline { // deletion will happen later, the layer file manager sets wanted_garbage_collected - guard.finish_compact_l0(&layer_removal_cs, remove_layers, &insert_layers)?; + guard.finish_compact_l0( + &layer_removal_cs, + remove_layers, + &insert_layers, + &self.metrics, + )?; drop_wlock(guard); diff --git a/pageserver/src/tenant/timeline/layer_manager.rs b/pageserver/src/tenant/timeline/layer_manager.rs index 0e59817c0d..1a15020cf0 100644 --- a/pageserver/src/tenant/timeline/layer_manager.rs +++ b/pageserver/src/tenant/timeline/layer_manager.rs @@ -206,6 +206,7 @@ impl LayerManager { layer_removal_cs: &Arc>, compact_from: Vec>, compact_to: &[ResidentLayer], + metrics: &crate::metrics::TimelineMetrics, ) -> Result<()> { let mut updates = self.layer_map.batch_update(); for l in compact_to { @@ -213,6 +214,10 @@ impl LayerManager { LayerResidenceStatus::Resident, LayerResidenceEventReason::LayerCreate, ); + metrics + .resident_physical_size_gauge + .add(l.layer_desc().file_size); + Self::insert_historic_layer(l.as_ref().clone(), &mut updates, &mut self.layer_fmgr); } for l in compact_from {