Re: Refactor recovery conflict signaling a little

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Xuneng Zhou <xunengzhou@gmail.com>
Cc: Alexander Lakhin <exclusion@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Chao Li <li.evan.chao@gmail.com>
Date: 2026-03-09T15:28:42Z
Lists: pgsql-hackers

Attachments

On 09/03/2026 17:02, Xuneng Zhou wrote:
> Did you use Alexander’s reproducer script? I tried reproducing with a
> 1 ms pg_usleep() added to all three functions that clear
> MyProc->pendingRecoveryConflicts, but I still couldn’t reproduce the
> issue.

I used the attached, to be precise. With that it fails every time for 
me. I'm not sure if the "if (am_walsender)" check is necessary, I added 
it just to make the test run faster.

- Heikki

Commits

  1. Don't clear pendingRecoveryConflicts at end of transaction

  2. Refactor ProcessRecoveryConflictInterrupt for readability

  3. Separate RecoveryConflictReasons from procsignals

  4. Use ProcNumber rather than pid in ReplicationSlot

  5. Don't hint that you can reconnect when the database is dropped

  6. Remove useless errdetail_abort()

  7. Teach standby conflict resolution to use SIGUSR1