Re: [PG19] Promotion hangs behind a backend blocked on a stuck client

From: shihao zhong <zhong950419(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Manu <manuelreyesbravo(at)gmail(dot)com>, Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Noah Misch <noah(at)leadboat(dot)com>
Subject: Re: [PG19] Promotion hangs behind a backend blocked on a stuck client
Date: 2026-10-20 01:25:50
Message-ID: CAGRkXqR8Kfdd=G1Le=RzhRHzZBbLtPc44207bwhrPDu_C5ZMEA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Masahiko,

I think you are right, 0001 would turn the checksum barrier's retry into a
FATAL.

Option (1) can cover the failover slot case in 19. At the end of
recovery, a stale cache can only be in a process started before
StartupLogicalDecodingStatus(), like the checkpointer. Later ones read
it at startup, and a replayed enable waits for everyone. So the startup
process can emit the barrier there, and at the end of recovery wait for
that generation when the status did not change.

It does not help when replaying the enable record has to wait, or
when the end of recovery itself turns the status on. For master I
agree (2) is better, and it helps DROP DATABASE too.

Thanks,
Shihao

Attachment Content-Type Size
v5-0002-Test-promotion-with-a-backend-blocked-on-a-stuck-.patch application/octet-stream 5.3 KB
v5-0001-Skip-the-end-of-recovery-barrier-wait-when-nothin.patch application/octet-stream 3.5 KB
nocfbot-v5-19-0001-Skip-the-end-of-recovery-barrier-wait-when-nothin.patch application/octet-stream 8.3 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2026-10-20 01:34:05 Re: [PATCH] initdb: map Windows' new Canadian time zone names
Previous Message Baji Shaik 2026-10-20 01:11:11 Re: two small tab-completion patches (ALTER CONSTRAINT, CHECK modifiers)