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(-)
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 |