| From: | Amit Kapila <akapila(at)postgresql(dot)org> | 
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org | 
| Subject: | pgsql: Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION. | 
| Date: | 2025-08-01 08:11:43 | 
| Message-ID: | E1uhkre-000A3w-1s@gemulon.postgresql.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-committers | 
Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION.
A deadlock can occur when the DDL command and the apply worker acquire
catalog locks in different orders while dropping replication origins.
The issue is rare in PG16 and higher branches because, in most cases, the
tablesync worker performs the origin drop in those branches, and its
locking sequence does not conflict with DDL operations.
This patch ensures consistent lock acquisition to prevent such deadlocks.
As per buildfarm.
Reported-by: Alexander Lakhin <exclusion(at)gmail(dot)com>
Author: Ajin Cherian <itsajin(at)gmail(dot)com>
Reviewed-by: Hayato Kuroda <kuroda(dot)hayato(at)fujitsu(dot)com>
Reviewed-by: vignesh C <vignesh21(at)gmail(dot)com>
Reviewed-by: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Backpatch-through: 14, where it was introduced
Discussion: https://postgr.es/m/bab95e12-6cc5-4ebb-80a8-3e41956aa297@gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/2ab2d6f970584b7ca60cfdf6569336903aa88db5
Modified Files
--------------
src/backend/catalog/pg_subscription.c       | 21 +++++++++++++++---
src/backend/replication/logical/tablesync.c | 34 +++++++++++++++++++++++++----
src/include/catalog/pg_subscription_rel.h   |  2 +-
3 files changed, 49 insertions(+), 8 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Heikki Linnakangas | 2025-08-01 16:10:32 | pgsql: libpq: Complain about missing BackendKeyData later with PGgetCan | 
| Previous Message | Tomas Vondra | 2025-07-31 14:06:11 | pgsql: Fix tab completion for ALTER ROLE|USER ... RESET |