From 4c7599e8dfdd439575a3df81fe1a54fb4ff91f24 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Sun, 15 Sep 2024 12:18:26 +0100 Subject: [PATCH] Revert "address the "This is silly" comment" This reverts commit c736f9d6ef5bd45b2c051789328c2a67320af2bb. --- pageserver/src/tenant/storage_layer.rs | 33 +++++-------------- .../src/tenant/storage_layer/delta_layer.rs | 6 ++-- .../src/tenant/storage_layer/image_layer.rs | 11 +++---- .../tenant/storage_layer/inmemory_layer.rs | 6 +--- 4 files changed, 16 insertions(+), 40 deletions(-) diff --git a/pageserver/src/tenant/storage_layer.rs b/pageserver/src/tenant/storage_layer.rs index 17673e2cb9..1ae3cfaf25 100644 --- a/pageserver/src/tenant/storage_layer.rs +++ b/pageserver/src/tenant/storage_layer.rs @@ -312,7 +312,8 @@ impl ValuesReconstructState { &mut self, key: &Key, lsn: Lsn, - future_value: FutureValue, + completes: bool, + value: sync::oneshot::Receiver>, ) -> ValueReconstructSituation { let state = self .keys @@ -320,22 +321,14 @@ impl ValuesReconstructState { .or_insert(Ok(VectoredValueReconstructState::default())); if let Ok(state) = state { - let key_done = match state.situation { + match state.situation { ValueReconstructSituation::Complete => unreachable!(), - ValueReconstructSituation::Continue => match future_value { - FutureValue::Img { rx } => { - assert!(state.img.is_none()); - state.img = Some((lsn, rx)); - true - } - FutureValue::WalRecord { will_init, rx } => { - state.records.push((lsn, rx)); - will_init - } - }, - }; + ValueReconstructSituation::Continue => { + state.records.push((lsn, value)); + } + } - if key_done && state.situation == ValueReconstructSituation::Continue { + if completes && state.situation == ValueReconstructSituation::Continue { state.situation = ValueReconstructSituation::Complete; self.keys_done.add_key(*key); } @@ -366,16 +359,6 @@ impl ValuesReconstructState { } } -enum FutureValue { - WalRecord { - will_init: bool, - rx: sync::oneshot::Receiver>, - }, - Img { - rx: sync::oneshot::Receiver>, - }, -} - impl Default for ValuesReconstructState { fn default() -> Self { Self::new() diff --git a/pageserver/src/tenant/storage_layer/delta_layer.rs b/pageserver/src/tenant/storage_layer/delta_layer.rs index 032543c4f0..d68dec4754 100644 --- a/pageserver/src/tenant/storage_layer/delta_layer.rs +++ b/pageserver/src/tenant/storage_layer/delta_layer.rs @@ -1002,10 +1002,8 @@ impl DeltaLayerInner { reconstruct_state.update_key( &blob_meta.key, blob_meta.lsn, - super::FutureValue::WalRecord { - will_init: blob_meta.will_init, - rx, - }, + blob_meta.will_init, + rx, ); } diff --git a/pageserver/src/tenant/storage_layer/image_layer.rs b/pageserver/src/tenant/storage_layer/image_layer.rs index 8abd8f2bb7..609a033426 100644 --- a/pageserver/src/tenant/storage_layer/image_layer.rs +++ b/pageserver/src/tenant/storage_layer/image_layer.rs @@ -588,11 +588,8 @@ impl ImageLayerInner { for (_, blob_meta) in read.blobs_at.as_slice() { let (tx, rx) = oneshot::channel(); senders.insert((blob_meta.key, blob_meta.lsn), tx); - reconstruct_state.update_key( - &blob_meta.key, - blob_meta.lsn, - super::FutureValue::Img { rx }, - ); + + reconstruct_state.update_key(&blob_meta.key, blob_meta.lsn, true, rx); } let buf_size = read.size(); @@ -627,7 +624,9 @@ impl ImageLayerInner { let sender = senders .remove(&(meta.meta.key, meta.meta.lsn)) .expect("sender must exist"); - let bytes = Bytes::copy_from_slice(buf); + // TODO: this is silly - sort it out + let bytes = Value::ser(&Value::Image(Bytes::copy_from_slice(buf))) + .expect("stupid but correct"); let _ = sender.send(Ok(bytes.into())); } diff --git a/pageserver/src/tenant/storage_layer/inmemory_layer.rs b/pageserver/src/tenant/storage_layer/inmemory_layer.rs index b6dc6c0ada..70c42d44d4 100644 --- a/pageserver/src/tenant/storage_layer/inmemory_layer.rs +++ b/pageserver/src/tenant/storage_layer/inmemory_layer.rs @@ -467,11 +467,7 @@ impl InMemoryLayer { let (tx, rx) = tokio::sync::oneshot::channel(); senders.insert((key, *entry_lsn), tx); - reconstruct_state.update_key( - &key, - *entry_lsn, - crate::tenant::storage_layer::FutureValue::WalRecord { will_init, rx }, - ); + reconstruct_state.update_key(&key, *entry_lsn, will_init, rx); if will_init { break;