From d4e262f6468ab278ba079070809e82f38159e97f Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Thu, 29 Jun 2023 09:11:15 -0400 Subject: [PATCH] delta with correct range Signed-off-by: Alex Chi Z --- .../tenant/storage_layer/inmemory_layer.rs | 19 ++++++++++++++----- pageserver/src/tenant/timeline.rs | 5 ++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/pageserver/src/tenant/storage_layer/inmemory_layer.rs b/pageserver/src/tenant/storage_layer/inmemory_layer.rs index 78bcfdafc0..6b58031eb6 100644 --- a/pageserver/src/tenant/storage_layer/inmemory_layer.rs +++ b/pageserver/src/tenant/storage_layer/inmemory_layer.rs @@ -11,6 +11,7 @@ use crate::tenant::blob_io::{BlobCursor, BlobWriter}; use crate::tenant::block_io::BlockReader; use crate::tenant::ephemeral_file::EphemeralFile; use crate::tenant::storage_layer::{ValueReconstructResult, ValueReconstructState}; +use crate::tenant::timeline::ENABLE_TIERED_COMPACTION; use crate::walrecord; use anyhow::{ensure, Result}; use pageserver_api::models::InMemoryLayerInfo; @@ -341,11 +342,18 @@ impl InMemoryLayer { // rare though, so we just accept the potential latency hit for now. let inner = self.inner.read().unwrap(); + let mut keys: Vec<(&Key, &VecMap)> = inner.index.iter().collect(); + keys.sort_by_key(|k| k.0); + let mut delta_layer_writer = DeltaLayerWriter::new( self.conf, self.timeline_id, self.tenant_id, - Key::MIN, + if ENABLE_TIERED_COMPACTION { + keys.first().unwrap().0.clone() + } else { + Key::MIN + }, self.start_lsn..inner.end_lsn.unwrap(), )?; @@ -353,9 +361,6 @@ impl InMemoryLayer { let mut cursor = inner.file.block_cursor(); - let mut keys: Vec<(&Key, &VecMap)> = inner.index.iter().collect(); - keys.sort_by_key(|k| k.0); - for (key, vec_map) in keys.iter() { let key = **key; // Write all page versions @@ -366,7 +371,11 @@ impl InMemoryLayer { } } - let delta_layer = delta_layer_writer.finish(Key::MAX)?; + let delta_layer = delta_layer_writer.finish(if ENABLE_TIERED_COMPACTION { + keys.last().unwrap().0.next() + } else { + Key::MAX + })?; Ok(delta_layer) } } diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 6ff9f0415f..3182c36417 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -3232,6 +3232,9 @@ impl Timeline { force: bool, ctx: &RequestContext, ) -> Result, PageReconstructError> { + if ENABLE_TIERED_COMPACTION { + return Ok(HashMap::new()); + } let timer = self.metrics.create_images_time_histo.start_timer(); let mut image_layers: Vec = Vec::new(); @@ -4074,7 +4077,7 @@ impl Timeline { let mut construct_image_for_key = false; let image_lsn = Lsn(lsn_range.end.0 - 1); - const PAGE_MATERIALIZE_THRESHOLD: usize = 64; + const PAGE_MATERIALIZE_THRESHOLD: usize = 40; for x in all_values_iter { let (key, lsn, value) = x?;