Fix REPACK decoding worker not cleaned up on FATAL exit
Álvaro Herrera <alvherre@kurilemu.de>
Fix REPACK decoding worker not cleaned up on FATAL exit When the launching backend of REPACK (CONCURRENTLY) is terminated via pg_terminate_backend(), ProcDiePending causes ereport(FATAL) which bypasses PG_FINALLY blocks. As a result, stop_repack_decoding_worker() is never called, leaving the decoding worker running indefinitely and holding its temporary replication slot. Fix by using PG_ENSURE_ERROR_CLEANUP, which handles both ERROR and FATAL exits. Author: Baji Shaik <baji.pgdev@gmail.com> Reviewed-by: Sami Imseih <samimseih@gmail.com> Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de> Discussion: https://postgr.es/m/CA+fm-RNoPxL2N7db_A0anMXV_aDu6jWj4PNOPtMtBUAPDPvSXQ@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/repack.c | modified | +25 −17 |
Discussion
- [PATCH] Fix REPACK decoding worker not cleaned up on FATAL exit 8 messages · 2026-05-12 → 2026-05-26