From 0cd01e33c38b0f8d69da0f4f5060ebe9e815ddbd Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Tue, 21 Mar 2023 23:30:02 +0200 Subject: [PATCH] Add LayerMap::contains method --- pageserver/src/tenant/layer_map.rs | 15 +++++++++++++++ .../tenant/layer_map/historic_layer_coverage.rs | 8 +------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/pageserver/src/tenant/layer_map.rs b/pageserver/src/tenant/layer_map.rs index 8d06ccd565..449560f390 100644 --- a/pageserver/src/tenant/layer_map.rs +++ b/pageserver/src/tenant/layer_map.rs @@ -122,6 +122,13 @@ impl BatchedUpdates<'_, L> where L: ?Sized + Layer, { + /// + /// Check if layer map contains layers with specified key and LSN range + /// + pub fn contains(&self, layer: Arc) -> bool { + self.layer_map.contains(layer) + } + /// /// Insert an on-disk layer. /// @@ -268,6 +275,14 @@ where BatchedUpdates { layer_map: self } } + /// + /// Check if layer map contains layers with specified key and LSN range + /// + pub fn contains(&self, layer: Arc) -> bool { + self.historic + .contains(historic_layer_coverage::LayerKey::from(&*layer)) + } + /// /// Insert an on-disk layer /// diff --git a/pageserver/src/tenant/layer_map/historic_layer_coverage.rs b/pageserver/src/tenant/layer_map/historic_layer_coverage.rs index f4d758e784..b63c361314 100644 --- a/pageserver/src/tenant/layer_map/historic_layer_coverage.rs +++ b/pageserver/src/tenant/layer_map/historic_layer_coverage.rs @@ -418,12 +418,6 @@ impl BufferedHistoricLayerCoverage { } pub fn insert(&mut self, layer_key: LayerKey, value: Value) { - // layer duplicates are not allowed - assert!(!self.layers.contains_key(&layer_key)); - self.buffer.insert(layer_key, Some(value)); - } - - pub fn replace_existed(&mut self, layer_key: LayerKey, value: Value) { self.buffer.insert(layer_key, Some(value)); } @@ -478,7 +472,7 @@ impl BufferedHistoricLayerCoverage { } None => Replacement::NotFound, Some(_existing) => { - self.replace_existed(layer_key.to_owned(), new); + self.insert(layer_key.to_owned(), new); Replacement::Replaced { in_buffered } } }