pgsql: Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION. - Mailing list pgsql-committers

From Amit Kapila
Subject pgsql: Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION.
Date
Msg-id E1uhkre-000A49-2F@gemulon.postgresql.org
Whole thread Raw
List 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@gmail.com>
Author: Ajin Cherian <itsajin@gmail.com>
Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Reviewed-by: vignesh C <vignesh21@gmail.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Backpatch-through: 14, where it was introduced
Discussion: https://postgr.es/m/bab95e12-6cc5-4ebb-80a8-3e41956aa297@gmail.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/41fb3f51cb74eca1ba959ccd2fb1c0d7fe0bf11b

Modified Files
--------------
src/backend/catalog/pg_subscription.c       | 33 +++++++++++++++++++++++++----
src/backend/replication/logical/tablesync.c | 27 ++++++++++++++++++++---
src/include/catalog/pg_subscription_rel.h   |  2 ++
3 files changed, 55 insertions(+), 7 deletions(-)


pgsql-committers by date:

Previous
From: Tomas Vondra
Date:
Subject: pgsql: Schema-qualify unnest() in ALTER DATABASE ... RESET
Next
From: Heikki Linnakangas
Date:
Subject: pgsql: libpq: Complain about missing BackendKeyData later with PGgetCan