pgsql: For cascading replication, wake physical and logical walsenders

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: For cascading replication, wake physical and logical walsenders
Date: 2023-04-08 08:10:56
Message-ID: E1pl3ex-0020iq-Dm@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

For cascading replication, wake physical and logical walsenders separately

Physical walsenders can't send data until it's been flushed; logical
walsenders can't decode and send data until it's been applied. On the
standby, the WAL is flushed first, which will only wake up physical
walsenders; and then applied, which will only wake up logical
walsenders.

Previously, all walsenders were awakened when the WAL was flushed. That
was fine for logical walsenders on the primary; but on the standby the
flushed WAL would have been not applied yet, so logical walsenders were
awakened too early.

Per idea from Jeff Davis and Amit Kapila.

Author: "Drouvot, Bertrand" <bertranddrouvot(dot)pg(at)gmail(dot)com>
Reviewed-By: Jeff Davis <pgsql(at)j-davis(dot)com>
Reviewed-By: Robert Haas <robertmhaas(at)gmail(dot)com>
Reviewed-by: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Reviewed-by: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Discussion: https://postgr.es/m/CAA4eK1+zO5LUeisabX10c81LU-fWMKO4M9Wyg1cdkbW7Hqh6vQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e101dfac3a53c20bfbf1ca85d30a368c2954facf

Modified Files
--------------
src/backend/access/transam/xlog.c | 6 ++---
src/backend/access/transam/xlogarchive.c | 2 +-
src/backend/access/transam/xlogrecovery.c | 37 +++++++++++++++++++-------
src/backend/replication/walreceiver.c | 2 +-
src/backend/replication/walsender.c | 41 ++++++++++++++++++++++++++---
src/include/replication/walsender.h | 22 ++++++++--------
src/include/replication/walsender_private.h | 3 +++
7 files changed, 84 insertions(+), 29 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2023-04-08 09:26:51 pgsql: Allow logical decoding on standbys
Previous Message Andres Freund 2023-04-08 07:11:01 pgsql: Handle logical slot conflicts on standby