On Thu, Mar 5, 2026 at 5:40 PM Anthonin Bonnefoy <[email protected]> wrote: > So it was relying on GetInsertRecPtr() instead of > GetXLogInsertRecPtr(). As mentioned in the thread, GetInsertRecPtr() > only returns the position of the last full xlog page, meaning it > doesn't fix the issue we have where the last partial page contains a > continuation record. > > Testing the XLogFlush(GetInsertRecPtr()) patch with my script, I still > get the shutdown stuck issue. > > Using GetXLogInsertRecPtr() is required to make sure the last partial > page is correctly flushed.
Since GetXLogInsertRecPtr() returns a bogus LSN and XLogFlush() does almost nothing during recovery, I added a !RecoveryInProgress() check as follows. I've attached the latest version of the patch and updated the commit message. - if (got_STOPPING) - XLogBackgroundFlush(); + if (got_STOPPING && !RecoveryInProgress()) + XLogFlush(GetXLogInsertRecPtr()); Regards, -- Fujii Masao
v6-0001-Fix-publisher-shutdown-hang-caused-by-logical-wal.patch
Description: Binary data
