Enhance slot synchronization API to respect promotion signal. Previously, during a promotion, only the slot synchronization worker was signaled to shut down. The backend executing slot synchronization via the pg_sync_replication_slots() SQL function was not signaled, allowing it to complete its synchronization cycle before exiting.
An upcoming patch improves pg_sync_replication_slots() to wait until replication slots are fully persisted before finishing. This behaviour requires the backend to exit promptly if a promotion occurs. This patch ensures that, during promotion, a signal is also sent to the backend running pg_sync_replication_slots(), allowing it to be interrupted and exit immediately. This change was originally committed to master only. However, backpatch it to v17, where slot synchronization was introduced. Because it is required for an upcoming bug fix addressing slotsync (including pg_sync_replication_slots()) blocking promotion when stuck in a wait. Author: Ajin Cherian <[email protected]> Reviewed-by: Shveta Malik <[email protected]> Reviewed-by: Chao Li <[email protected]> Reviewed-by: Amit Kapila <[email protected]> Discussion: https://postgr.es/m/CAFPTHDZAA%2BgWDntpa5ucqKKba41%3DtXmoXqN3q4rpjO9cdxgQrw%40mail.gmail.com Backpatch-through: 17 Branch ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/4bed04d39566b788549ad157b32ccca9032bb4a1 Author: Amit Kapila <[email protected]> Modified Files -------------- src/backend/replication/logical/slotsync.c | 157 ++++++++++++++++++----------- 1 file changed, 99 insertions(+), 58 deletions(-)
