Re: prevent immature WAL streaming
Amul Sul <sulamul@gmail.com>
Attachments
- v2_remove-abortedRecPtr-global-variable.patch (application/octet-stream) patch v2
On Wed, Oct 13, 2021 at 10:58 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > On 2021-Oct-13, Amul Sul wrote: > > > I have one more question, regarding the need for other global > > variables i.e. abortedRecPtr. (Sorry for coming back after so long.) > > > > Instead of abortedRecPtr point, isn't enough to write > > overwrite-contrecord at XLogCtl->lastReplayedEndRecPtr? I think both > > are pointing to the same location then can't we use > > lastReplayedEndRecPtr instead of abortedRecPtr to write > > overwrite-contrecord and remove need of extra global variable, like > > attached? > > I'm a bit fuzzy on the difference "the end+1" and "the start of the next > record". Are they always the same? We do have XLogRecPtrToBytePos() > and XLogBytePosToEndRecPtr() to convert unadorned XLogRecPtr values to > "usable byte positions", which suggests to me that the proposed patch > may fail if end+1 is a page or segment boundary. > Yes, you are correct, that could be a possible failure. How about calculating that from the lastReplayedEndRecPtr by converting it first to "usable byte positions" and then recalculating the record pointer from that, like attached? > The other difference is that abortedRecPtr is set if we fail to read a > record, but XLogCtl->lastReplayedEndRecPtr is set even if we read the > record successfully. So you'd have need a bool flag that the overwrite > contrecord record needs to be written. Your patch is using the fact > that missingContrecPtr is non-invalid as such a flag ... I can't see > anything wrong with that. So maybe your patch is okay in this aspect. > > > You might wonder why I am so concerned about the global variable. The > > reason is that I am working on another thread[1] where we are trying > > to club all the WAL write operations that happen at the end of > > StartupXLOG into a separate function. In the future, we might want to > > allow executing this function from other processes (e.g. > > Checkpointer). For that, we need to remove the dependency of those WAL > > write operations having on the global variables which are mostly valid > > in the startup process. > > Seems a fine goal. Thanks for looking at the patch. Regards, Amul
Commits
-
Fix determination of broken LSN in OVERWRITTEN_CONTRECORD
- ef41c3fd6c86 13.6 landed
- d24dac954906 14.2 landed
- 9c6ab1ef3382 12.10 landed
- 72cf39d51ade 10.20 landed
- 44bd3ed332d6 15.0 landed
- 2c3fddcbbd8a 11.15 landed
-
Fix instability in 026_overwrite_contrecord.pl test.
- b66767b56b1c 15.0 landed
- 9959a078f2d7 12.10 landed
- 5a3240cf6b2e 13.6 landed
- 4dc2cb74d00e 11.15 landed
- 3aa858c8932e 14.2 landed
- 18ce21768a80 10.20 landed
-
Fix typo
- f914b8badc21 12.9 landed
- c3bda112ebe2 10.19 landed
- 7c0a78f08998 13.5 landed
- 3aa572b8b296 11.14 landed
- 9b6194eb0aa5 9.6.24 landed
-
Change recently added test code for stability
- 79c7fe1af82d 14.1 landed
- 6287b8e195f3 11.14 landed
- 5ec87619bc5d 9.6.24 landed
- 4b7abbe48a11 12.9 landed
- 41cce2326135 10.19 landed
- 2cdf97fd1ec8 13.5 landed
- 010e5233733a 15.0 landed
-
Remove unstable, unnecessary test; fix typo
- d186d233dfde 15.0 landed
- 0ce67bce0071 14.1 landed
-
Repair two portability oversights of new test
- e3731bac52cf 14.1 landed
- d03bca4d70c2 15.0 landed
-
Fix WAL replay in presence of an incomplete record
- 64a8687a6891 14.1 landed
- ff9f111bce24 15.0 landed
- d9fe2cc7dd3e 10.19 landed
- cfedb279a6b8 11.14 landed
- 1df0a914d58f 12.9 landed
- 1d97d3d0867f 13.5 landed
- 148c6ee3be39 9.6.24 landed
-
Document XLOG_INCLUDE_XID a little better
- c1d1ae1db237 14.0 landed
- ade24dab97a2 15.0 landed
-
Revert "Avoid creating archive status ".ready" files too early"
- e456167a8af4 12.9 landed
- c801c3a1ff73 11.14 landed
- aa8bd0890bb2 14.0 landed
- 9aaf7dbff36f 10.19 landed
- 96b665083eb7 15.0 landed
- 518621c40b23 13.5 landed
- 121cdaff1068 9.6.24 landed
-
Avoid creating archive status ".ready" files too early
- 5065aeafb0b7 12.9 cited
-
Fix scenario where streaming standby gets stuck at a continuation record.
- 066871980183 11.0 cited
-
Teach xlogreader to follow timeline switches
- 1148e22a82ed 10.0 cited
-
Forbid using pg_xlogfile_name() and pg_xlogfile_name_offset() during
- 370f770c15a4 9.0.0 cited