Re: [HACKERS] make async slave to wait for lsn to be replayed
Alexander Korotkov <aekorotkov@gmail.com>
Attachments
- v2-0002-Improve-header-comment-for-WaitLSNSetLatches.patch (application/octet-stream) patch v2-0002
- v2-0001-Adjust-pg_wal_replay_wait-procedure-behavior-on-p.patch (application/octet-stream) patch v2-0001
- v2-0003-Add-tests-for-pg_wal_replay_wait-errors.patch (application/octet-stream) patch v2-0003
On Tue, Aug 6, 2024 at 5:17 AM Alexander Korotkov <aekorotkov@gmail.com> wrote: > On Sat, Aug 3, 2024 at 6:07 AM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > On Sat, Aug 3, 2024 at 3:45 AM Kevin Hale Boyes <kcboyes@gmail.com> wrote: > > > In the for loop in WaitForLSNReplay, shouldn't the check for in-recovery be moved up above the call to GetXLogReplayRecPtr? > > > If we get promoted while waiting for the timeout we could call GetXLogReplayRecPtr while not in recovery. > > > > This is intentional. After standby gets promoted, > > GetXLogReplayRecPtr() returns the last WAL position being replayed > > while being standby. So, if standby reached target lsn before being > > promoted, we don't have to throw an error. > > > > But this gave me an idea that before the loop we probably need to put > > RecoveryInProgress() check after GetXLogReplayRecPtr() too. I'll > > recheck that. > > The attached patchset comprises assorted improvements for pg_wal_replay_wait(). > > The 0001 patch is intended to improve this situation. Actually, it's > not right to just put RecoveryInProgress() after > GetXLogReplayRecPtr(), because more wal could be replayed between > these calls. Instead we need to recheck GetXLogReplayRecPtr() after > getting negative result of RecoveryInProgress() because WAL replay > position couldn't get updated after. > 0002 patch comprises fix for the header comment of WaitLSNSetLatches() function > 0003 patch comprises tests for pg_wal_replay_wait() errors. Here is a revised version of the patchset. I've fixed some typos, identation, etc. I'm going to push this once it passes cfbot. ------ Regards, Alexander Korotkov Supabase
Commits
-
Ensure standby promotion point in 043_wal_replay_wait.pl
- 2520226c953c 18.0 landed
-
Minor cleanup related to pg_wal_replay_wait() procedure
- 85b98b8d5a48 18.0 landed
-
Adjust pg_wal_replay_wait() procedure behavior on promoted standby
- 867d396ccd2a 18.0 landed
-
pg_wal_replay_wait(): Fix typo in the doc
- 8036d73ae3d4 18.0 landed
-
Implement pg_wal_replay_wait() stored procedure
- 3c5db1d6b016 18.0 landed
- 06c418e163e9 17.0 landed
-
Revert: Implement pg_wal_replay_wait() stored procedure
- 772faafca1b2 17.0 landed
-
Call WaitLSNCleanup() in AbortTransaction()
- 74eaf66f988c 17.0 landed
-
Clarify what is protected by WaitLSNLock
- ee79928441e7 17.0 landed
-
Use an LWLock instead of a spinlock in waitlsn.c
- 25f42429e2ff 17.0 landed
-
Use the pairing heap instead of a flat array for LSN replay waiters
- bf1e65080629 17.0 landed
-
Minor improvements for waitlsn.c
- e37662f22158 17.0 landed
-
Make the order of the header file includes consistent
- 97d85be36544 17.0 cited