diff --git a/pageserver/src/walredo/apply_neon.rs b/pageserver/src/walredo/apply_neon.rs index 7aaa357318..d712d8bf5e 100644 --- a/pageserver/src/walredo/apply_neon.rs +++ b/pageserver/src/walredo/apply_neon.rs @@ -67,7 +67,10 @@ pub(crate) fn apply_in_neon( let map = &mut page[pg_constants::MAXALIGN_SIZE_OF_PAGE_HEADER_DATA..]; map[map_byte as usize] &= !(flags << map_offset); - postgres_ffi::page_set_lsn(page, lsn); + // The page should never be empty, but we're checking it anyway as a precaution, so that if it is empty for some reason anyway, we don't make matters worse by setting the LSN on it. + if !postgres_ffi::page_is_new(page) { + postgres_ffi::page_set_lsn(page, lsn); + } } // Repeat for 'old_heap_blkno', if any @@ -81,7 +84,10 @@ pub(crate) fn apply_in_neon( let map = &mut page[pg_constants::MAXALIGN_SIZE_OF_PAGE_HEADER_DATA..]; map[map_byte as usize] &= !(flags << map_offset); - postgres_ffi::page_set_lsn(page, lsn); + // The page should never be empty, but we're checking it anyway as a precaution, so that if it is empty for some reason anyway, we don't make matters worse by setting the LSN on it. + if !postgres_ffi::page_is_new(page) { + postgres_ffi::page_set_lsn(page, lsn); + } } } // Non-relational WAL records are handled here, with custom code that has the