diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 262dccac7d..c0acbe9b1f 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -68,7 +68,9 @@ use crate::{ tenant::{ layer_map::{LayerMap, SearchResult}, metadata::TimelineMetadata, - storage_layer::{inmemory_layer::IndexEntry, PersistentLayerDesc}, + storage_layer::{ + inmemory_layer::IndexEntry, LayerId, PersistentLayerDesc, ValueReconstructSituation, + }, }, walredo, }; @@ -1126,6 +1128,14 @@ impl Timeline { .await?; get_data_timer.stop_and_record(); + // transform reconstruct state which is per key into a map + // layer => all reads from that layer + struct KeyWaiter { + img: Option>, + values: Vec>, + } + let mut key_waiters: BTreeMap> = todo!(); + let reconstruct_timer = crate::metrics::RECONSTRUCT_TIME .for_get_kind(get_kind) .start_timer(); diff --git a/pageserver/src/tenant/vectored_blob_io.rs b/pageserver/src/tenant/vectored_blob_io.rs index 553edf6d8b..de93fb4eaf 100644 --- a/pageserver/src/tenant/vectored_blob_io.rs +++ b/pageserver/src/tenant/vectored_blob_io.rs @@ -18,6 +18,7 @@ use std::collections::BTreeMap; use bytes::BytesMut; +use futures::channel::oneshot; use pageserver_api::key::Key; use tokio::io::AsyncWriteExt; use tokio_epoll_uring::BoundedBuf; @@ -665,6 +666,7 @@ impl StreamingVectoredReadPlanner { start_offset: u64, end_offset: u64, is_last_blob_in_read: bool, + // destination: oneshot::Sender>, ) -> Option { match &mut self.read_builder { Some(read_builder) => {