pgsql: Fix the Drop Database hang.

Поиск
Список
Период
Сортировка
От Amit Kapila
Тема pgsql: Fix the Drop Database hang.
Дата
Msg-id E1pKAd5-005BKs-Vr@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix the Drop Database hang.

The drop database command waits for the logical replication sync worker to
accept ProcSignalBarrier and the worker's slot creation waits for the drop
database to finish which leads to a deadlock. This happens because the
tablesync worker holds interrupts while creating a slot.

We prevent cancel/die interrupts while creating a slot in the table sync
worker because it is possible that before the server finishes this
command, a concurrent drop subscription happens which would complete
without removing this slot and that leads to the slot existing until the
end of walsender. However, the slot will eventually get dropped at the
walsender exit time, so there is no danger of the dangling slot.

This patch reallows cancel/die interrupts while creating a slot and
modifies the test to wait for slots to become zero to prevent finding an
ephemeral slot.

The reported hang doesn't happen in PG14 as the drop database starts to
wait for ProcSignalBarrier with PG15 (commits 4eb2176318 and e2f65f4255)
but it is good to backpatch this till PG14 as it is not a good idea to
prevent interrupts during a network call that could block indefinitely.

Reported-by: Lakshmi Narayanan Sreethar
Diagnosed-by: Andres Freund
Author: Hou Zhijie
Reviewed-by: Vignesh C, Amit Kapila
Backpatch-through: 14, where it was introduced in commit 6b67d72b60
Discussion: https://postgr.es/m/CA+kvmZELXQ4ZD3U=XCXuG3KvFgkuPoN1QrEj8c-rMRodrLOnsg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6c6d6ba3ee2c160b53f727cf8e612014b316d6e4

Modified Files
--------------
src/backend/replication/logical/tablesync.c |  7 -------
src/test/subscription/t/004_sync.pl         | 10 +++++++---
2 files changed, 7 insertions(+), 10 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: pgsql: libpqwalreceiver: Convert to libpq-be-fe-helpers.h
Следующее
От: Robert Haas
Дата:
Сообщение: pgsql: Adjust interaction of CREATEROLE with role properties.