diff --git a/pageserver/src/tenant/storage_layer.rs b/pageserver/src/tenant/storage_layer.rs index fba8424153..4254664bf7 100644 --- a/pageserver/src/tenant/storage_layer.rs +++ b/pageserver/src/tenant/storage_layer.rs @@ -141,7 +141,7 @@ impl VectoredValueReconstructState { pub(crate) struct ValuesReconstructState { /// The keys will be removed after `get_vectored` completes. The caller outside `Timeline` /// should not expect to get anything from this hashmap. - pub(crate) keys: HashMap>, + pub(crate) keys: HashMap, /// The keys which are already retrieved keys_done: KeySpaceRandomAccum, @@ -257,25 +257,21 @@ impl ValuesReconstructState { let state = self .keys .entry(*key) - .or_insert(Ok(VectoredValueReconstructState::default())); + .or_insert(VectoredValueReconstructState::default()); - if let Ok(state) = state { - match state.situation { - ValueReconstructSituation::Complete => unreachable!(), - ValueReconstructSituation::Continue => { - state.on_disk_values.push((lsn, value)); - } + match state.situation { + ValueReconstructSituation::Complete => unreachable!(), + ValueReconstructSituation::Continue => { + state.on_disk_values.push((lsn, value)); } - - if completes && state.situation == ValueReconstructSituation::Continue { - state.situation = ValueReconstructSituation::Complete; - self.keys_done.add_key(*key); - } - - state.situation - } else { - ValueReconstructSituation::Complete } + + if completes && state.situation == ValueReconstructSituation::Continue { + state.situation = ValueReconstructSituation::Complete; + self.keys_done.add_key(*key); + } + + state.situation } /// Returns the key space describing the keys that have diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 6babf47620..2a8219b15b 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -1140,11 +1140,10 @@ impl Timeline { let layers_visited = reconstruct_state.get_layers_visited(); let futs = FuturesUnordered::new(); - for (key, res) in std::mem::take(&mut reconstruct_state.keys) { + for (key, state) in std::mem::take(&mut reconstruct_state.keys) { futs.push({ let walredo_self = self.myself.upgrade().expect("&self method holds the arc"); async move { - let state = res.expect("Read path is infallible"); assert!(matches!( state.situation, ValueReconstructSituation::Complete