| 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: | Whole Thread | Raw Message | 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 |