Re: [HACKERS] make async slave to wait for lsn to be replayed

From: Alexander Korotkov <aekorotkov(at)gmail(dot)com>
To: Kartyshov Ivan <i(dot)kartyshov(at)postgrespro(dot)ru>
Cc: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, hlinnaka(at)iki(dot)fi, alvherre(at)alvh(dot)no-ip(dot)org, pashkin(dot)elfe(at)gmail(dot)com, bharath(dot)rupireddyforpostgres(at)gmail(dot)com, euler(at)eulerto(dot)com, thomas(dot)munro(at)gmail(dot)com, peter(at)eisentraut(dot)org, amit(dot)kapila16(at)gmail(dot)com, dilipbalaut(at)gmail(dot)com, smithpb2250(at)gmail(dot)com, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed
Date: 2024-07-31 16:40:48
Message-ID: CAPpHfdt8rs0=NC3aHgcj_ZXGKEexZtk=Y8ytK188Ta3NWD5+Pg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Jul 15, 2024 at 2:02 PM Alexander Korotkov <aekorotkov(at)gmail(dot)com> wrote:
> On Mon, Jul 15, 2024 at 4:24 AM Alexander Korotkov <aekorotkov(at)gmail(dot)com> wrote:
> > Thanks to Kyotaro for the review. And thanks to Ivan for the patch
> > revision. I made another revision of the patch.
>
> I've noticed failures on cfbot. The attached revision addressed docs
> build failure. Also it adds some "quits" for background psql sessions
> for tests. Probably this will address test hangs on windows.

I made the following changes to the patch.

1) I've changed the check for snapshot in pg_wal_replay_wait(). Now
it checks that GetOldestSnapshot() returns NULL. It happens when both
ActiveSnapshot is NULL and RegisteredSnapshots pairing heap is empty.
This is the same condition when SnapshotResetXmin() sets out xmin to
invalid. Thus, we are not preventing WAL from replay. This should be
satisfied when pg_wal_replay_wait() isn't called within a transaction
with an isolation level higher than READ COMMITTED, another procedure,
or a function. Documented it this way.

2) Explicitly document in the PortalRunUtility() comment that
pg_wal_replay_wait() is another case when active snapshot gets
released.

3) I've removed tests with cascading replication. It's rather unclear
what problem these tests could potentially spot.

4) Did some improvements to docs, comments and commit message to make
them consistent with the patch contents.

The commit to pg17 was inconsiderate. But I feel this patch got much
better shape. Especially, now it's clear when the
pg_wal_replay_wait() procedure can be used. So, I dare commit this to
pg18 if nobody objects.

------
Regards,
Alexander Korotkov
Supabase

Attachment Content-Type Size
v23-0001-Implement-pg_wal_replay_wait-stored-procedure.patch application/x-patch 36.4 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2024-07-31 16:58:37 Re: Recent 027_streaming_regress.pl hangs
Previous Message Robert Haas 2024-07-31 16:23:22 Re: On disable_cost