From dbb5d0800d1d065b2f919d63bc84c6b376f21b74 Mon Sep 17 00:00:00 2001 From: Bojan Serafimov Date: Wed, 11 Jan 2023 13:59:26 -0500 Subject: [PATCH] Fix lsn bound --- pageserver/src/tenant/layer_map.rs | 4 +++- pageserver/src/tenant/layer_map/historic_layer_coverage.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pageserver/src/tenant/layer_map.rs b/pageserver/src/tenant/layer_map.rs index ec3189a18d..539cba91b0 100644 --- a/pageserver/src/tenant/layer_map.rs +++ b/pageserver/src/tenant/layer_map.rs @@ -263,7 +263,9 @@ where key_range: &Range, lsn: Lsn, ) -> Result, Option>)>> { - let version = match self.historic.get().unwrap().get_version(lsn.0 - 1) { + // TODO I'm 80% sure the lsn bound is inclusive. Double-check that + // and document it. Do the same for image_layer_exists and count_deltas + let version = match self.historic.get().unwrap().get_version(lsn.0) { Some(v) => v, None => return Ok(vec![]), }; diff --git a/pageserver/src/tenant/layer_map/historic_layer_coverage.rs b/pageserver/src/tenant/layer_map/historic_layer_coverage.rs index f104e615d9..bc12b77a99 100644 --- a/pageserver/src/tenant/layer_map/historic_layer_coverage.rs +++ b/pageserver/src/tenant/layer_map/historic_layer_coverage.rs @@ -65,7 +65,7 @@ impl HistoricLayerCoverage { self.historic.insert(lsn.start, self.head.clone()); } - /// Query at a particular LSN + /// Query at a particular LSN, inclusive pub fn get_version(self: &Self, lsn: u64) -> Option<&LayerCoverageTuple> { match self.historic.range(..=lsn).rev().next() { Some((_, v)) => Some(v),