pgsql: Make the tablesync worker's replication origin drop logic robust
От | Amit Kapila |
---|---|
Тема | pgsql: Make the tablesync worker's replication origin drop logic robust |
Дата | |
Msg-id | E1oXdqr-002YfH-Ol@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Make the tablesync worker's replication origin drop logic robust. In commit f6c5edb8ab, we started to drop the replication origin slots before tablesync worker exits to avoid consuming more slots than required. We were dropping the replication origin in the same transaction where we were marking the tablesync state as SYNCDONE. Now, if there is any error after we have dropped the origin but before we commit the containing transaction, the in-memory state of replication progress won't be rolled back. Due to this, after the restart, tablesync worker can start streaming from the wrong location and can apply the already processed transaction. To fix this, we need to opportunistically drop the origin after marking the tablesync state as SYNCDONE. Even, if the tablesync worker fails to remove the replication origin before exit, the apply worker ensures to clean it up afterward. Reported by Tom Lane as per buildfarm. Diagnosed-by: Masahiko Sawada Author: Hou Zhijie Reviewed-By: Masahiko Sawada, Amit Kapila Discussion: https://postgr.es/m/20220714115155.GA5439@depesz.com Discussion: https://postgr.es/m/CAD21AoAw0Oofi4kiDpJBOwpYyBBBkJj=sLUOn4Gd2GjUAKG-fw@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/88f488319bac051b874bcec87941217e25e0e126 Modified Files -------------- src/backend/commands/subscriptioncmds.c | 25 ++++---- src/backend/replication/logical/tablesync.c | 91 ++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 41 deletions(-)
В списке pgsql-committers по дате отправления: