diff --git a/pageserver/src/tenant/storage_layer.rs b/pageserver/src/tenant/storage_layer.rs index e85359af16..3b9312360b 100644 --- a/pageserver/src/tenant/storage_layer.rs +++ b/pageserver/src/tenant/storage_layer.rs @@ -103,7 +103,7 @@ struct LayerAccessStatsInner { last_residence_changes: HistoryBufferWithDropCounter, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Copy)] struct LayerAccessStatFullDetails { when: SystemTime, task_kind: TaskKind, @@ -126,7 +126,7 @@ fn system_time_to_millis_since_epoch(ts: &SystemTime) -> u64 { } impl LayerAccessStatFullDetails { - fn to_api_model(&self) -> pageserver_api::models::LayerAccessStatFullDetails { + fn as_api_model(&self) -> pageserver_api::models::LayerAccessStatFullDetails { let Self { when, task_kind, @@ -189,14 +189,13 @@ impl LayerAccessStats { task_kind, access_kind, }; - inner - .first_access - .get_or_insert_with(|| this_access.clone()); + inner.first_access.get_or_insert(this_access); inner.count_by_access_kind[access_kind] += 1; inner.task_kind_flag |= task_kind; inner.last_accesses.write(this_access); } - fn to_api_model( + + fn as_api_model( &self, reset: LayerAccessStatsReset, ) -> pageserver_api::models::LayerAccessStats { @@ -217,8 +216,8 @@ impl LayerAccessStats { .iter() .map(|task_kind| task_kind.into()) // into static str, powered by strum_macros .collect(), - first: first_access.as_ref().map(|a| a.to_api_model()), - accesses_history: last_accesses.map(|m| m.to_api_model()), + first: first_access.as_ref().map(|a| a.as_api_model()), + accesses_history: last_accesses.map(|m| m.as_api_model()), residence_events_history: last_residence_changes.clone(), }; match reset { diff --git a/pageserver/src/tenant/storage_layer/delta_layer.rs b/pageserver/src/tenant/storage_layer/delta_layer.rs index 9b322faa65..c955995bf2 100644 --- a/pageserver/src/tenant/storage_layer/delta_layer.rs +++ b/pageserver/src/tenant/storage_layer/delta_layer.rs @@ -450,7 +450,7 @@ impl PersistentLayer for DeltaLayer { let layer_file_name = self.filename().file_name(); let lsn_range = self.get_lsn_range(); - let access_stats = self.access_stats.to_api_model(reset); + let access_stats = self.access_stats.as_api_model(reset); HistoricLayerInfo::Delta { layer_file_name, diff --git a/pageserver/src/tenant/storage_layer/image_layer.rs b/pageserver/src/tenant/storage_layer/image_layer.rs index 86c1aee619..8ba901521f 100644 --- a/pageserver/src/tenant/storage_layer/image_layer.rs +++ b/pageserver/src/tenant/storage_layer/image_layer.rs @@ -269,7 +269,7 @@ impl PersistentLayer for ImageLayer { layer_file_size: Some(self.file_size), lsn_start: lsn_range.start, remote: false, - access_stats: self.access_stats.to_api_model(reset), + access_stats: self.access_stats.as_api_model(reset), } } diff --git a/pageserver/src/tenant/storage_layer/remote_layer.rs b/pageserver/src/tenant/storage_layer/remote_layer.rs index 7391875d0c..51bb4dcc2a 100644 --- a/pageserver/src/tenant/storage_layer/remote_layer.rs +++ b/pageserver/src/tenant/storage_layer/remote_layer.rs @@ -171,7 +171,7 @@ impl PersistentLayer for RemoteLayer { lsn_start: lsn_range.start, lsn_end: lsn_range.end, remote: true, - access_stats: self.access_stats.to_api_model(reset), + access_stats: self.access_stats.as_api_model(reset), } } else { HistoricLayerInfo::Image { @@ -179,7 +179,7 @@ impl PersistentLayer for RemoteLayer { layer_file_size: self.layer_metadata.file_size(), lsn_start: lsn_range.start, remote: true, - access_stats: self.access_stats.to_api_model(reset), + access_stats: self.access_stats.as_api_model(reset), } } }