From d72aac0ad8831b3d838ce7b67d3bb4987c62159d Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Fri, 17 May 2024 17:17:52 +0300 Subject: [PATCH] Set result.not_modified_since as minimum of last_written_lsn and replay lsn --- pgxn/neon/pagestore_smgr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pgxn/neon/pagestore_smgr.c b/pgxn/neon/pagestore_smgr.c index e3b841f526..9408161492 100644 --- a/pgxn/neon/pagestore_smgr.c +++ b/pgxn/neon/pagestore_smgr.c @@ -1528,9 +1528,13 @@ neon_get_request_lsns(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber blkno) { /* Request the page at the last replayed LSN. */ result.request_lsn = GetXLogReplayRecPtr(NULL); - result.not_modified_since = last_written_lsn; result.effective_request_lsn = result.request_lsn; - Assert(last_written_lsn <= result.request_lsn); + /* + * lastReplayedEndRecPtr is advanced after applying WAL record while + * last written LSN can be advanced while applying WAL record this is why + * last_written_lsn can be larger than GetXLogReplayRecPtr(NULL). + */ + result.not_modified_since = Min(last_written_lsn, result.request_lsn); neon_log(DEBUG1, "neon_get_request_lsns request lsn %X/%X, not_modified_since %X/%X", LSN_FORMAT_ARGS(result.request_lsn), LSN_FORMAT_ARGS(result.not_modified_since));