Hi,
On Mon, Jun 08, 2026 at 08:47:48AM +0000, Bertrand Drouvot wrote:
> Attached:
>
> 0001: To fix this race
>
> Fix by checking GetWALInsertionTimeLineIfSet() when RecoveryInProgress()
> returns true. If InsertTimeLineID is already set (non-zero), the new timeline is
> established and we use it directly, avoiding attempts to read from segments that
> may have been removed.
>
> 0002: Adding a test in 035_standby_logical_decoding.pl
>
> It makes use of a new injection point "promotion-after-wal-segment-cleanup" in
> StartupXLOG(), right after CleanupAfterArchiveRecovery() removes old timeline
> WAL segments but before SharedRecoveryState is set to RECOVERY_STATE_DONE.
>
> The test fails without the fix in 0001 so it also somehow proves that the
> diagnostic is right.
>
> 0003: Apply the same timeline fix to read_local_xlog_page_guts()
>
> Indeed, it could hit the same race as mentioned by Xuneng-San.
>
> 0004: Add a test for 0003
Re-attaching v1 patches here to have the cfbot focusing on those.
Regards,
--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com