Change LSN range assignment rue for partial image layers

This commit is contained in:
Konstantin Knizhnik
2022-10-06 20:16:13 +03:00
parent 51aa53ab90
commit 9f10195d7b
2 changed files with 6 additions and 2 deletions

View File

@@ -276,9 +276,11 @@ impl LayerMap {
continue;
}
assert!(l.get_key_range().contains(&key));
/*
if !l.contains(&key)? {
continue;
}
*/
if l.get_lsn_range().start >= end_lsn {
info!(
"Candidate delta layer {}..{} is too new for lsn {}",

View File

@@ -1537,6 +1537,8 @@ impl Timeline {
let mut new_layers = Vec::new();
let mut last_key: Option<Key> = None;
if let Some(last_delta_layer) = latest_delta_layer {
let end_lsn = last_delta_layer.get_lsn_range().end;
let lsn_range = end_lsn..end_lsn+1;
for (key, lsn, _) in last_delta_layer.key_iter(true) {
let value = self.get(key, lsn)?;
if let Some(curr_writer) = &writer {
@@ -1552,13 +1554,13 @@ impl Timeline {
self.timeline_id,
self.tenant_id,
key,
last_delta_layer.get_lsn_range().clone(),
lsn_range.clone(),
)?);
}
writer
.as_mut()
.unwrap()
.put_value(key, lsn, Value::Image(value))?;
.put_value(key, end_lsn, Value::Image(value))?;
last_key = Some(key);
}
}