From 64aa8e5c6b7146d957d8341a90eee73ae4a9df2c Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Thu, 18 May 2023 00:07:44 +0300 Subject: [PATCH] Fi unit tests --- pageserver/src/tenant/timeline.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index e039bd5291..d37a33c735 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -3764,9 +3764,15 @@ impl Timeline { let mut layers_to_remove = Vec::new(); let mut wanted_image_layers = KeySpaceRandomAccum::default(); - let keyspace = self - .collect_keyspace(self.get_last_record_lsn(), ctx) - .await?; + // Do not collect keyspace for Unit tests + let gc_keyspace = if ctx.task_kind() == TaskKind::GarbageCollector { + Some( + self.collect_keyspace(self.get_last_record_lsn(), ctx) + .await?, + ) + } else { + None + }; // Scan all layers in the timeline (remote or on-disk). // @@ -3857,10 +3863,12 @@ impl Timeline { // But image layers are in any case less sparse than delta layers. Also we need some // protection from replacing recent image layers with new one after each GC iteration. if l.is_incremental() && !LayerMap::is_l0(&*l) { - let layer_logical_size = keyspace.get_logical_size(&l.get_key_range()); - let layer_age = new_gc_cutoff.0 - l.get_lsn_range().end.0; - if layer_logical_size < layer_age { - wanted_image_layers.add_range(l.get_key_range()); + if let Some(keyspace) = &gc_keyspace { + let layer_logical_size = keyspace.get_logical_size(&l.get_key_range()); + let layer_age = new_gc_cutoff.0 - l.get_lsn_range().end.0; + if layer_logical_size < layer_age { + wanted_image_layers.add_range(l.get_key_range()); + } } } result.layers_not_updated += 1;