From 8b137dfcd24d9839340f32960bcaa722947f6a64 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Wed, 30 Mar 2022 12:55:01 +0300 Subject: [PATCH] Check for valid LSN range in count_deltas --- pageserver/src/layered_repository/layer_map.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pageserver/src/layered_repository/layer_map.rs b/pageserver/src/layered_repository/layer_map.rs index b49492c2d3..74e8d6c2df 100644 --- a/pageserver/src/layered_repository/layer_map.rs +++ b/pageserver/src/layered_repository/layer_map.rs @@ -120,14 +120,14 @@ impl Div for IntKey { impl Add for IntKey { type Output = Self; fn add(self, rhs: Self) -> Self::Output { - IntKey(self.0 + rhs.0) + IntKey(self.0.wrapping_add(rhs.0)) } } impl Sub for IntKey { type Output = Self; fn sub(self, rhs: Self) -> Self::Output { - IntKey(self.0 - rhs.0) + IntKey(self.0.wrapping_sub(rhs.0)) } } @@ -504,6 +504,9 @@ impl LayerMap { /// given key and LSN range. pub fn count_deltas(&self, key_range: &Range, lsn_range: &Range) -> Result { let mut result = 0; + if lsn_range.start >= lsn_range.end { + return Ok(0); + } let envelope = AABB::from_corners( [ IntKey(key_range.start.to_i128()),