]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix LOCK_TIMEOUT handling in slotsync worker.
authorAmit Kapila <akapila@postgresql.org>
Tue, 9 Dec 2025 07:02:08 +0000 (07:02 +0000)
committerAmit Kapila <akapila@postgresql.org>
Tue, 9 Dec 2025 07:02:08 +0000 (07:02 +0000)
commitf2818868aec856e7d2502e5232e08d3a4857a802
treefbc8d6b6af074d28341cab8e1956ab52a7f8e5ef
parentca98d8ba1087286a1599df83527037879ff86bd3
Fix LOCK_TIMEOUT handling in slotsync worker.

Previously, the slotsync worker relied on SIGINT for graceful shutdown
during promotion. However, SIGINT is also used by the LOCK_TIMEOUT handler
to cancel queries. Since the slotsync worker can lock catalog tables while
parsing libpq tuples, this overlap caused it to ignore LOCK_TIMEOUT
signals and potentially wait indefinitely on locks.

This patch replaces the slotsync worker's SIGINT handler with
StatementCancelHandler to correctly process query-cancel interrupts.
Additionally, the startup process now uses SIGUSR1 to signal the slotsync
worker to stop during promotion. The worker exits after detecting that the
shared memory flag stopSignaled is set.

Author: Hou Zhijie <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Backpatch-through: 17, here it was introduced
Discussion: https://postgr.es/m/TY4PR01MB169078F33846E9568412D878C94A2A@TY4PR01MB16907.jpnprd01.prod.outlook.com
src/backend/replication/logical/slotsync.c