Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion?
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-03-18T16:05:29Z
Lists: pgsql-hackers
Attachments
- v1-0001-Use-SIGTERM-to-stop-slotsync-worker-during-standb.patch (application/octet-stream) patch v1-0001
Hi, I noticed that during standby promotion the startup process sends SIGUSR1 to the slotsync worker to make it exit. Is there a reason for using SIGUSR1? If the slotsync worker is blocked waiting for input from the primary (e.g., due to a network outage between the primary and standby), SIGUSR1 won't interrupt the wait. As a result, the worker can remain stuck and delay promotion for a long time. Would it make sense to send SIGTERM instead, so the worker can exit promptly even while waiting? I've attached a WIP patch that does this. I haven't updated the source comments yet, but I can do so if we agree on the approach. SIGTERM alone is not sufficient, though. A new slotsync worker could start immediately after the old one exits and block promotion again. To address this, the patch makes a newly started worker exit immediately if promotion is in progress. Thoughts? Regards, -- Fujii Masao
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Update .abi-compliance-history for change to enum ProcSignalReason
- 29d8bd908560 17.10 landed
-
Fix ABI break by moving PROCSIG_SLOTSYNC_MESSAGE in ProcSignalReason
- 586f4266fb49 17.10 landed
- acf49bfede2a 18.4 landed
-
Fix slotsync worker blocking promotion when stuck in wait
- 15910b1c363f 17.10 landed
- 58c1188a3eaa 18.4 landed
- db93032a7cbd 19 (unreleased) landed
-
Add retry logic to pg_sync_replication_slots().
- 0d2d4a0ec3ec 19 (unreleased) cited
-
Enhance slot synchronization API to respect promotion signal.
- 1362bc33e025 19 (unreleased) cited