Drop replication origin slots before tablesync worker exits.
authorAmit Kapila <akapila@postgresql.org>
Tue, 30 Aug 2022 03:21:41 +0000 (08:51 +0530)
committerAmit Kapila <akapila@postgresql.org>
Tue, 30 Aug 2022 03:21:41 +0000 (08:51 +0530)
commitf6c5edb8abcac04eb3eac6da356e59d399b2bcef
tree059817b92102142963428da9f31de02a15d4e349
parent865424627db638acdbe4b5d0384d0b9cd34838a5
Drop replication origin slots before tablesync worker exits.

Currently, the replication origin tracking of the tablesync worker is
dropped by the apply worker. So, there will be a small lag between the
tablesync worker exit and its origin tracking got removed. In the
meantime, new tablesync workers can be launched and will try to set up
a new origin tracking. This can lead the system to reach max configured
limit (max_replication_slots) even if the user has configured the max
limit considering the number of tablesync workers required in the system.

We decided not to back-patch as this can occur in very narrow
circumstances and users have to option to increase the configured limit by
increasing max_replication_slots.

Reported-by: Hubert Depesz Lubaczewski
Author: Ajin Cherian
Reviwed-by: Masahiko Sawada, Peter Smith, Hou Zhijie, Amit Kapila
Discussion: https://postgr.es/m/20220714115155.GA5439@depesz.com
src/backend/commands/subscriptioncmds.c
src/backend/replication/logical/tablesync.c