Re: BUG #19093: Behavioral change in walreceiver termination between PostgreSQL 14.17 and 14.18

Xuneng Zhou <xunengzhou@gmail.com>

From: Xuneng Zhou <xunengzhou@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Noah Misch <noah@leadboat.com>, ryanzxg@gmail.com, pgsql-bugs@lists.postgresql.org, Euler Taveira <euler@eulerto.com>
Date: 2025-10-31T10:50:06Z
Lists: pgsql-bugs

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add assertions checking for the startup process in WAL replay routines

  2. Add assertion check for WAL receiver state during stream-archive transition

  3. Add WalRcvGetState() to retrieve the state of a WAL receiver

  4. Fix unconditional WAL receiver shutdown during stream-archive transition

  5. Add test tracking WAL receiver shutdown for primary_conninfo updates

  6. Reset InstallXLogFileSegmentActive after walreceiver self-initiated exit.

  7. Replace durable_rename_excl() by durable_rename(), take two

  8. Split xlog.c into xlog.c and xlogrecovery.c.

Attachments

Hi,

On Fri, Oct 31, 2025 at 11:16 AM Michael Paquier <michael@paquier.xyz> wrote:
>
> On Fri, Oct 31, 2025 at 12:07:01AM +0800, Xuneng Zhou wrote:
> > Using a wrapper function seems better here.
>
> For a cleaner git history, the wrapper function and the assertion
> should be split as its own commit, with the actual fix applied first.
> Just an opinion.
>

It makes sense to me. I've split the patch for HEAD into three patch
sets.  Please see the attached files.

> > I’ve incorporated both tests and the assertion into the patch applied to master.
> > For earlier stable branches, the test in
> > 040_standby_failover_slots_sync.pl and the assertion for
> > WAL receiver state checking are not included (if Noah agrees too). Please check.
>
> Thanks for doing that.  I have extracted the test to check the "valid"
> WAL receiver shutdown case, and applied that separately.

Thanks for checking and pushing this.

Best,
Xuneng