pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Amit Kapila <akapila@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Add retry logic to pg_sync_replication_slots().
Date: Mon, 15 Dec 2025 02:59:05 +0000
Message-ID: <E1vUyng-000pns-29@gemulon.postgresql.org> (raw)

Add retry logic to pg_sync_replication_slots().

Previously, pg_sync_replication_slots() would finish without synchronizing
slots that didn't meet requirements, rather than failing outright. This
could leave some failover slots unsynchronized if required catalog rows or
WAL segments were missing or at risk of removal, while the standby
continued removing needed data.

To address this, the function now waits for the primary slot to advance to
a position where all required data is available on the standby before
completing synchronization. It retries cyclically until all failover slots
that existed on the primary at the start of the call are synchronized.
Slots created after the function begins are not included. If the standby
is promoted during this wait, the function exits gracefully and the
temporary slots will be removed.

Author: Ajin Cherian <itsajin@gmail.com>
Author: Hou Zhijie <houzj.fnst@fujitsu.com>
Reviewed-by: Shveta Malik <shveta.malik@gmail.com>
Reviewed-by: Japin Li <japinli@hotmail.com>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Ashutosh Sharma <ashu.coek88@gmail.com>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Yilin Zhang <jiezhilove@126.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Discussion: https://postgr.es/m/CAFPTHDZAA%2BgWDntpa5ucqKKba41%3DtXmoXqN3q4rpjO9cdxgQrw%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/0d2d4a0ec3eca64e7f5ce7f7630b56a561b2663c

Modified Files
--------------
doc/src/sgml/func/func-admin.sgml                  |   4 +-
doc/src/sgml/logicaldecoding.sgml                  |  16 +-
src/backend/replication/logical/slotsync.c         | 226 +++++++++++++++++----
src/backend/utils/activity/wait_event_names.txt    |   2 +-
.../recovery/t/040_standby_failover_slots_sync.pl  |  57 ++++--
5 files changed, 245 insertions(+), 60 deletions(-)



Message-ID: <E1vUyng-000pns-29@gemulon.postgresql.org>
Permalink:  ../E1vUyng-000pns-29@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1vUyng-000pns-29@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: akapila@postgresql.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Add retry logic to pg_sync_replication_slots().
  In-Reply-To: <E1vUyng-000pns-29@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox