diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 440b8204db..f6c603de06 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -2914,6 +2914,19 @@ impl Timeline { let mut max_deltas = 0; let wanted_image_layers = self.wanted_image_layers.lock().unwrap(); + if let Some(wanted) = &*wanted_image_layers { + let img_range = + partition.ranges.first().unwrap().start..partition.ranges.last().unwrap().end; + if let Some((_start, end)) = wanted.range(..img_range.end).next_back() { + if *end > img_range.start { + info!( + "Force generation of layer {}-{} wanted by GC)", + img_range.start, img_range.end + ); + return Ok(true); + } + } + } for part_range in &partition.ranges { let image_coverage = layers.image_coverage(part_range, lsn)?; @@ -2947,26 +2960,6 @@ impl Timeline { ); return Ok(true); } - if num_deltas > 0 { - if let Some(wanted) = &*wanted_image_layers { - if let Some((_start, end)) = wanted.range(..img_range.end).next_back() { - if *end > img_range.start { - info!( - "Force generation of layer {}-{} wanted by GC ({} deltas)", - img_range.start, img_range.end, num_deltas - ); - return Ok(true); - } else { - info!( - "Image {}-{} is not wanted", - img_range.start, img_range.end - ); - } - } - } - } else { - info!("No deltas for range {}-{}", img_range.start, img_range.end); - } } } } @@ -3871,23 +3864,17 @@ impl Timeline { end = *prev_end; } } - break; } else { - to_remove.push(*prev_start); - if *prev_end > end { - end = *prev_end; - } + break; } - } else { - break; } - } - for key in to_remove { - wanted_image_layers.remove(&key); - } - if insert_new_range { - info!("Wanted image {}..{}", start, end); - wanted_image_layers.insert(start, end); + for key in to_remove { + wanted_image_layers.remove(&key); + } + if insert_new_range { + info!("Wanted image {}..{}", start, end); + wanted_image_layers.insert(start, end); + } } } result.layers_not_updated += 1;