Signed-off-by: Alex Chi Z <chi@neon.tech>
This commit is contained in:
Alex Chi Z
2023-07-11 15:11:05 -04:00
parent 9cdd9a2801
commit 1ab2e4da52
2 changed files with 8 additions and 3 deletions

View File

@@ -261,7 +261,8 @@ impl LayerMap {
let version = self.historic.get().unwrap().get_version(end_lsn.0 - 1)?;
let latest_delta = version.delta_coverage.query(key.to_i128());
let latest_image = if exclude_image {
None
let version = self.historic.get().unwrap().get_version(end_lsn.0 - 2)?;
version.image_coverage.query(key.to_i128())
} else {
version.image_coverage.query(key.to_i128())
};

View File

@@ -2449,7 +2449,7 @@ impl Timeline {
self.metrics.materialized_page_cache_hit_counter.inc_by(1);
return Ok(());
}
if prev_lsn <= cont_lsn {
if cont_lsn > prev_lsn || (cont_lsn == prev_lsn && !exclude_image_this_round) {
// Didn't make any progress in last iteration. Error out to avoid
// getting stuck in the loop.
return Err(layer_traversal_error(format!(
@@ -2633,6 +2633,10 @@ impl Timeline {
if !layer.layer_desc().is_delta
&& matches!(result, ValueReconstructResult::Continue)
{
assert!(
!exclude_image_this_round
|| (exclude_image_this_round && lsn_floor != cont_lsn)
);
last_round_image = true;
}
cont_lsn = lsn_floor;
@@ -2644,7 +2648,7 @@ impl Timeline {
let layer = Arc::clone(&layer);
move || layer.traversal_id()
}),
exclude_image_this_round,
last_round_image,
));
continue 'outer;
}