From 450f79b3f596b94bfbf5b3734a41d0694166ccef Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Thu, 24 Aug 2023 19:50:25 +0300 Subject: [PATCH] refactor: fix residency and metrics to layermanager --- pageserver/src/tenant/timeline.rs | 15 ++------------- pageserver/src/tenant/timeline/layer_manager.rs | 9 ++++++++- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 4779a7a5eb..7494c14f3b 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -12,8 +12,7 @@ use bytes::Bytes; use fail::fail_point; use itertools::Itertools; use pageserver_api::models::{ - DownloadRemoteLayersTaskInfo, DownloadRemoteLayersTaskSpawnRequest, LayerMapInfo, - LayerResidenceEventReason, LayerResidenceStatus, TimelineState, + DownloadRemoteLayersTaskInfo, DownloadRemoteLayersTaskSpawnRequest, LayerMapInfo, TimelineState, }; use serde_with::serde_as; use storage_broker::BrokerClientChannel; @@ -2749,17 +2748,7 @@ impl Timeline { let mut guard = self.layers.write().await; - for l in &image_layers { - // FIXME: these should be in guard - self.metrics - .resident_physical_size_gauge - .add(l.layer_desc().file_size); - l.access_stats().record_residence_event( - LayerResidenceStatus::Resident, - LayerResidenceEventReason::LayerCreate, - ); - } - guard.track_new_image_layers(&image_layers); + guard.track_new_image_layers(&image_layers, &self.metrics); drop_wlock(guard); timer.stop_and_record(); diff --git a/pageserver/src/tenant/timeline/layer_manager.rs b/pageserver/src/tenant/timeline/layer_manager.rs index 1a15020cf0..3a5494dd8b 100644 --- a/pageserver/src/tenant/timeline/layer_manager.rs +++ b/pageserver/src/tenant/timeline/layer_manager.rs @@ -154,9 +154,16 @@ impl LayerManager { } /// Add image layers to the layer map, called from `create_image_layers`. - pub(crate) fn track_new_image_layers(&mut self, image_layers: &[ResidentLayer]) { + pub(crate) fn track_new_image_layers( + &mut self, + image_layers: &[ResidentLayer], + metrics: &crate::metrics::TimelineMetrics, + ) { let mut updates = self.layer_map.batch_update(); for layer in image_layers { + metrics + .resident_physical_size_gauge + .add(layer.layer_desc().file_size); layer.access_stats().record_residence_event( LayerResidenceStatus::Resident, LayerResidenceEventReason::LayerCreate,