layer_manager, layer_access_stats: remove witness sidequest

it was interfering with me moving responsibilities back and forth
This commit is contained in:
Joonas Koivunen
2023-08-16 12:30:05 +03:00
parent 30847e59b9
commit aa8e954197
2 changed files with 20 additions and 12 deletions

View File

@@ -13,7 +13,7 @@ use fail::fail_point;
use itertools::Itertools;
use pageserver_api::models::{
DownloadRemoteLayersTaskInfo, DownloadRemoteLayersTaskSpawnRequest, LayerMapInfo,
LayerResidenceStatus, TimelineState,
LayerResidenceEventReason, LayerResidenceStatus, TimelineState,
};
use remote_storage::GenericRemoteStorage;
use serde_with::serde_as;
@@ -2782,10 +2782,10 @@ 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);
let l = Arc::new(l);
l.access_stats().record_residence_event(
LayerResidenceStatus::Resident,
LayerResidenceEventReason::LayerCreate,

View File

@@ -1,4 +1,5 @@
use anyhow::{bail, ensure, Context, Result};
use pageserver_api::models::{LayerResidenceEventReason, LayerResidenceStatus};
use std::{collections::HashMap, sync::Arc};
use tracing::trace;
use utils::{
@@ -167,6 +168,10 @@ impl LayerManager {
pub(crate) fn track_new_image_layers(&mut self, image_layers: &[ResidentLayer]) {
let mut updates = self.layer_map.batch_update();
for layer in image_layers {
layer.access_stats().record_residence_event(
LayerResidenceStatus::Resident,
LayerResidenceEventReason::LayerCreate,
);
Self::insert_historic_layer(layer.as_ref().clone(), &mut updates, &mut self.layer_fmgr);
}
updates.flush();
@@ -178,20 +183,24 @@ impl LayerManager {
delta_layer: Option<&ResidentLayer>,
frozen_layer_for_check: &Arc<InMemoryLayer>,
) {
let l = self.layer_map.frozen_layers.pop_front();
let inmem = self
.layer_map
.frozen_layers
.pop_front()
.expect("there must be a inmem layer to flush");
let mut updates = self.layer_map.batch_update();
// Only one thread may call this function at a time (for this
// timeline). If two threads tried to flush the same frozen
// Only one task may call this function at a time (for this
// timeline). If two tasks tried to flush the same frozen
// layer to disk at the same time, that would not work.
assert!(compare_arced_layers(&l.unwrap(), frozen_layer_for_check));
assert_eq!(Arc::as_ptr(&inmem), Arc::as_ptr(frozen_layer_for_check));
if let Some(delta_layer) = delta_layer {
Self::insert_historic_layer(
delta_layer.as_ref().clone(),
&mut updates,
&mut self.layer_fmgr,
if let Some(l) = delta_layer {
l.access_stats().record_residence_event(
LayerResidenceStatus::Resident,
LayerResidenceEventReason::LayerCreate,
);
Self::insert_historic_layer(l.as_ref().clone(), &mut updates, &mut self.layer_fmgr);
}
updates.flush();
}
@@ -207,7 +216,6 @@ impl LayerManager {
let mut updates = self.layer_map.batch_update();
for l in compact_to {
l.access_stats().record_residence_event(
&guard,
LayerResidenceStatus::Resident,
LayerResidenceEventReason::LayerCreate,
);