fix: use new LayerE::for_resident

This commit is contained in:
Joonas Koivunen
2023-08-24 11:57:09 +03:00
parent b1134f6857
commit bc5a643c19

View File

@@ -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((