Re: [HACKERS] make async slave to wait for lsn to be replayed
От | Alexander Korotkov |
---|---|
Тема | Re: [HACKERS] make async slave to wait for lsn to be replayed |
Дата | |
Msg-id | CAPpHfdt8rs0=NC3aHgcj_ZXGKEexZtk=Y8ytK188Ta3NWD5+Pg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] make async slave to wait for lsn to be replayed (Alexander Korotkov <aekorotkov@gmail.com>) |
Ответы |
Re: [HACKERS] make async slave to wait for lsn to be replayed
|
Список | pgsql-hackers |
On Mon, Jul 15, 2024 at 2:02 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > On Mon, Jul 15, 2024 at 4:24 AM Alexander Korotkov <aekorotkov@gmail.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
Вложения
В списке pgsql-hackers по дате отправления: