mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 17:32:56 +00:00
@@ -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<Lsn, u64>)> = 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<Lsn, u64>)> = 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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3232,6 +3232,9 @@ impl Timeline {
|
||||
force: bool,
|
||||
ctx: &RequestContext,
|
||||
) -> Result<HashMap<LayerFileName, LayerFileMetadata>, PageReconstructError> {
|
||||
if ENABLE_TIERED_COMPACTION {
|
||||
return Ok(HashMap::new());
|
||||
}
|
||||
let timer = self.metrics.create_images_time_histo.start_timer();
|
||||
let mut image_layers: Vec<ImageLayer> = 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?;
|
||||
|
||||
Reference in New Issue
Block a user