Re: t/035_standby_logical_decoding.pl might fail on attempt to read wrong timeline

From: Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>
To: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>
Cc: Alexander Lakhin <exclusion(at)gmail(dot)com>, "xunengzhou(at)gmail(dot)com" <xunengzhou(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: t/035_standby_logical_decoding.pl might fail on attempt to read wrong timeline
Date: 2026-06-09 06:03:28
Message-ID: aiessEw9U8r8fs7L@bdtpg
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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

Attachment Content-Type Size
v1-0001-Fix-race-condition-in-logical-decoding-timeline-s.patch text/x-diff 2.6 KB
v1-0002-Add-injection-point-test-for-logical-decoding-tim.patch text/x-diff 4.8 KB
v1-0003-Apply-the-same-timeline-fix-to-read_local_xlog_pa.patch text/x-diff 1.8 KB
v1-0004-Add-SQL-path-test-for-read_local_xlog_page_guts-t.patch text/x-diff 3.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message jian he 2026-06-09 06:11:57 Re: typedef struct WindowClause misleading comments
Previous Message Fujii Masao 2026-06-09 06:01:48 Re: Rename EXISTS-to-ANY converted subplan to exists_to_any