mirror of
https://github.com/neondatabase/neon.git
synced 2026-10-29 06:56:47 +00:00
replace Option<LayerAccessStatsReset>::None with LayerAccessStatsReset::NoReset
This commit is contained in:
@@ -536,7 +536,8 @@ async fn layer_map_info_handler(request: Request<Body>) -> Result<Response<Body>
|
||||
let timeline_id: TimelineId = parse_request_param(&request, "timeline_id")?;
|
||||
check_permission(&request, Some(tenant_id))?;
|
||||
|
||||
let reset: Option<LayerAccessStatsReset> = parse_query_param(&request, "reset")?;
|
||||
let reset: LayerAccessStatsReset =
|
||||
parse_query_param(&request, "reset")?.unwrap_or(LayerAccessStatsReset::NoReset);
|
||||
|
||||
let tenant = mgr::get_tenant(tenant_id, true)
|
||||
.await
|
||||
|
||||
@@ -121,6 +121,7 @@ pub enum LayerResidenceStatus {
|
||||
|
||||
#[derive(Clone, Copy, strum_macros::EnumString)]
|
||||
pub enum LayerAccessStatsReset {
|
||||
NoReset,
|
||||
JustTaskKindFlags,
|
||||
AllStats,
|
||||
}
|
||||
@@ -249,19 +250,11 @@ impl LayerAccessStats {
|
||||
inner.task_kind_flag |= task_kind;
|
||||
inner.last_accesses.write(this_access);
|
||||
}
|
||||
fn reset(&self, what: LayerAccessStatsReset) {
|
||||
fn to_api_model(
|
||||
&self,
|
||||
reset: LayerAccessStatsReset,
|
||||
) -> pageserver_api::models::LayerAccessStats {
|
||||
let mut inner = self.0.lock().unwrap();
|
||||
match what {
|
||||
LayerAccessStatsReset::JustTaskKindFlags => {
|
||||
inner.task_kind_flag.clear();
|
||||
}
|
||||
LayerAccessStatsReset::AllStats => {
|
||||
*inner = LayerAccessStatsInner::default();
|
||||
}
|
||||
}
|
||||
}
|
||||
fn to_api_model(&self) -> pageserver_api::models::LayerAccessStats {
|
||||
let inner = self.0.lock().unwrap();
|
||||
let LayerAccessStatsInner {
|
||||
first_access,
|
||||
count_by_access_kind,
|
||||
@@ -269,7 +262,7 @@ impl LayerAccessStats {
|
||||
last_accesses,
|
||||
last_residence_changes,
|
||||
} = &*inner;
|
||||
pageserver_api::models::LayerAccessStats {
|
||||
let ret = pageserver_api::models::LayerAccessStats {
|
||||
access_count_by_access_kind: count_by_access_kind
|
||||
.iter()
|
||||
.map(|(kind, count)| (kind, *count))
|
||||
@@ -284,7 +277,17 @@ impl LayerAccessStats {
|
||||
.iter()
|
||||
.map(|s| s.to_api_model())
|
||||
.collect(),
|
||||
};
|
||||
match reset {
|
||||
LayerAccessStatsReset::NoReset => (),
|
||||
LayerAccessStatsReset::JustTaskKindFlags => {
|
||||
inner.task_kind_flag.clear();
|
||||
}
|
||||
LayerAccessStatsReset::AllStats => {
|
||||
*inner = LayerAccessStatsInner::default();
|
||||
}
|
||||
}
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,7 +398,7 @@ pub trait PersistentLayer: Layer {
|
||||
/// current_physical_size is computed as the som of this value.
|
||||
fn file_size(&self) -> Option<u64>;
|
||||
|
||||
fn info(&self, reset: Option<LayerAccessStatsReset>) -> HistoricLayerInfo;
|
||||
fn info(&self, reset: LayerAccessStatsReset) -> HistoricLayerInfo;
|
||||
|
||||
fn access_stats(&self) -> &LayerAccessStats;
|
||||
}
|
||||
|
||||
@@ -426,26 +426,22 @@ impl PersistentLayer for DeltaLayer {
|
||||
Some(self.file_size)
|
||||
}
|
||||
|
||||
fn info(&self, reset: Option<LayerAccessStatsReset>) -> HistoricLayerInfo {
|
||||
fn info(&self, reset: LayerAccessStatsReset) -> HistoricLayerInfo {
|
||||
let layer_file_name = self.filename().file_name();
|
||||
let key_range = self.get_key_range();
|
||||
let lsn_range = self.get_lsn_range();
|
||||
|
||||
let ret = HistoricLayerInfo::Delta {
|
||||
let access_stats = self.access_stats.to_api_model(reset);
|
||||
|
||||
HistoricLayerInfo::Delta {
|
||||
layer_file_name,
|
||||
key_start: key_range.start,
|
||||
key_end: key_range.end,
|
||||
lsn_start: lsn_range.start,
|
||||
lsn_end: lsn_range.end,
|
||||
remote: false,
|
||||
access_stats: self.access_stats.to_api_model(),
|
||||
};
|
||||
|
||||
if let Some(reset) = reset {
|
||||
self.access_stats.reset(reset);
|
||||
access_stats,
|
||||
}
|
||||
|
||||
ret
|
||||
}
|
||||
|
||||
fn access_stats(&self) -> &LayerAccessStats {
|
||||
|
||||
@@ -238,25 +238,19 @@ impl PersistentLayer for ImageLayer {
|
||||
Some(self.file_size)
|
||||
}
|
||||
|
||||
fn info(&self, reset: Option<LayerAccessStatsReset>) -> HistoricLayerInfo {
|
||||
fn info(&self, reset: LayerAccessStatsReset) -> HistoricLayerInfo {
|
||||
let layer_file_name = self.filename().file_name();
|
||||
let key_range = self.get_key_range();
|
||||
let lsn_range = self.get_lsn_range();
|
||||
|
||||
let ret = HistoricLayerInfo::Image {
|
||||
HistoricLayerInfo::Image {
|
||||
layer_file_name,
|
||||
key_start: key_range.start,
|
||||
key_end: key_range.end,
|
||||
lsn_start: lsn_range.start,
|
||||
remote: false,
|
||||
access_stats: self.access_stats.to_api_model(),
|
||||
};
|
||||
|
||||
if let Some(reset) = reset {
|
||||
self.access_stats.reset(reset);
|
||||
access_stats: self.access_stats.to_api_model(reset),
|
||||
}
|
||||
|
||||
ret
|
||||
}
|
||||
|
||||
fn access_stats(&self) -> &LayerAccessStats {
|
||||
|
||||
@@ -142,7 +142,7 @@ impl PersistentLayer for RemoteLayer {
|
||||
self.layer_metadata.file_size()
|
||||
}
|
||||
|
||||
fn info(&self, _reset: Option<LayerAccessStatsReset>) -> HistoricLayerInfo {
|
||||
fn info(&self, reset: LayerAccessStatsReset) -> HistoricLayerInfo {
|
||||
let layer_file_name = self.filename().file_name();
|
||||
let key_range = self.get_key_range();
|
||||
let lsn_range = self.get_lsn_range();
|
||||
@@ -155,7 +155,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(),
|
||||
access_stats: self.access_stats.to_api_model(reset),
|
||||
}
|
||||
} else {
|
||||
HistoricLayerInfo::Image {
|
||||
@@ -164,7 +164,7 @@ impl PersistentLayer for RemoteLayer {
|
||||
key_end: key_range.end,
|
||||
lsn_start: lsn_range.start,
|
||||
remote: true,
|
||||
access_stats: self.access_stats.to_api_model(),
|
||||
access_stats: self.access_stats.to_api_model(reset),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -820,7 +820,7 @@ impl Timeline {
|
||||
self.state.subscribe()
|
||||
}
|
||||
|
||||
pub fn layer_map_info(&self, reset: Option<LayerAccessStatsReset>) -> LayerMapInfo {
|
||||
pub fn layer_map_info(&self, reset: LayerAccessStatsReset) -> LayerMapInfo {
|
||||
let mut in_memory_layers = Vec::new();
|
||||
let layer_map = self.layers.read().unwrap();
|
||||
if let Some(open_layer) = &layer_map.open_layer {
|
||||
|
||||
Reference in New Issue
Block a user