From 3fa72bbf5d340236b819fb73b47bf152c9043ee5 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Sun, 18 Jun 2023 14:57:30 +0300 Subject: [PATCH] Force replcaing of master layers with local layer in cross-region pageserver replica --- pageserver/src/tenant/timeline.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index 4859abe700..cd86c51717 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -3117,7 +3117,12 @@ impl Timeline { layers.count_deltas(&img_range, &(img_lsn..lsn), Some(threshold))?; max_deltas = max_deltas.max(num_deltas); - if num_deltas >= threshold { + // Create new image layers if there are at least `threshold` delta layers since last image layer... + if num_deltas >= threshold + // ...or it is master layer for cross-region replica: force generation of image layer in this case + // to make replica independent from master. + || img_lsn <= self.replica_lsn.unwrap_or(Lsn(0)) + { debug!( "key range {}-{}, has {} deltas on this timeline in LSN range {}..{}", img_range.start, img_range.end, num_deltas, img_lsn, lsn