From 96df6498585c88f38f3582dd5bd5fe6c4544c411 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Fri, 18 Jul 2025 21:29:17 +0300 Subject: [PATCH] Update pgxn/neon/pagestore_smgr.c Co-authored-by: Matthias van de Meent --- pgxn/neon/pagestore_smgr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pgxn/neon/pagestore_smgr.c b/pgxn/neon/pagestore_smgr.c index 50b8e64abd..cbf630345e 100644 --- a/pgxn/neon/pagestore_smgr.c +++ b/pgxn/neon/pagestore_smgr.c @@ -589,8 +589,15 @@ neon_get_request_lsns(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber blkno, XLogRecPtr replay_lsn = GetXLogReplayRecPtr(NULL); if (MIN_BACKEND_PREFETCH_LSN == InvalidXLogRecPtr) + { + /* mark the backend's replay_lsn as "we have a request ongoing", blocking the expiration of any current LSN */ MIN_BACKEND_PREFETCH_LSN = replay_lsn; - + /* make sure memory operations are in correct order, even in concurrent systems */ + pg_memory_barrier(); + /* get the current LSN to register */ + replay_lsn = GetXLogReplayRecPtr(NULL); + MIN_BACKEND_PREFETCH_LSN = replay_lsn; + } for (int i = 0; i < nblocks; i++) { neon_request_lsns *result = &output[i];