pgsql: Fix slot data persistency when advancing physical replication sl

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix slot data persistency when advancing physical replication sl
Date: 2020-01-30 02:18:14
Message-ID: E1iwzPK-0002kF-4h@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix slot data persistency when advancing physical replication slots

Advancing a physical replication slot with pg_replication_slot_advance()
did not mark the slot as dirty if any advancing was done, preventing the
follow-up checkpoint to flush the slot data to disk. This caused the
advancing to be lost even on clean restarts. This does not happen for
logical slots as any advancing marked the slot as dirty. Per
discussion, the original feature has been implemented so as in the event
of a crash the slot may move backwards to a past LSN. This property is
kept and more documentation is added about that.

This commit adds some new TAP tests to check the persistency of physical
and logical slots after advancing across clean restarts.

Author: Alexey Kondratov, Michael Paquier
Reviewed-by: Andres Freund, Kyotaro Horiguchi, Craig Ringer
Discussion: https://postgr.es/m/059cc53a-8b14-653a-a24d-5f867503b0ee@postgrespro.ru
Backpatch-through: 11

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/374464c3e96fe3d55dc82a8417b034de14222a0b

Modified Files
--------------
doc/src/sgml/func.sgml | 7 +++++--
src/backend/replication/slotfuncs.c | 23 +++++++++++------------
src/test/recovery/t/001_stream_rep.pl | 27 ++++++++++++++++++++++++++-
src/test/recovery/t/006_logical_decoding.pl | 26 +++++++++++++++++++++++++-
4 files changed, 67 insertions(+), 16 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2020-01-30 06:09:11 Re: pgsql: Invent "trusted" extensions, and remove the pg_pltemplate catalo
Previous Message Tom Lane 2020-01-30 00:13:40 pgsql: Fix vcregress.pl for new plperl test case.