From bc5a643c19a8a8c3b25a43aa190a33ba31068439 Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Thu, 24 Aug 2023 11:57:09 +0300 Subject: [PATCH] fix: use new LayerE::for_resident --- pageserver/src/tenant/timeline.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index f308486168..d88246b5a2 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -1516,21 +1516,26 @@ impl Timeline { let stats = LayerAccessStats::for_loading_layer(status); - let layer = match (name, &decision) { - (name, UseLocal(m) | NeedsUpload(m)) => { - // FIXME: needsupload need to be ResidentLayers + let layer = match decision { + NeedsUpload(m) => { total_physical_size += m.file_size(); - Arc::new(LayerE::new(conf, &this, &name, m.file_size(), stats)) + let resident = LayerE::for_resident(conf, &this, name, &m); + let layer = resident.as_ref().clone(); + needs_upload.push((resident, m)); + layer } - (name, Evicted(remote) | UseRemote { remote, .. }) => { + UseLocal(m) => { + total_physical_size += m.file_size(); + let resident = LayerE::for_resident(conf, &this, name, &m); + resident.drop_eviction_guard() + } + Evicted(remote) | UseRemote { remote, .. } => { + // FIXME: there ought to be a known evicted factory instead of generic + // new Arc::new(LayerE::new(conf, &this, &name, remote.file_size(), stats)) } }; - if let NeedsUpload(m) = decision { - needs_upload.push((layer.clone(), m)); - } - loaded_layers.push(layer); } Ok((