Re: BUG #17928: Standby fails to decode WAL on termination of primary
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Sergei Kornilov <sk@zsrv.org>,
Noah Misch <noah@leadboat.com>, Tom Lane <tgl@sss.pgh.pa.us>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, pgsql-bugs@lists.postgresql.org, Fujii Masao <masao.fujii@oss.nttdata.com>
Date: 2023-09-19T22:51:12Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Correct assertion and comments about XLogRecordMaxSize.
- e1f95ec8cf6e 17.0 landed
-
Fix edge-case for xl_tot_len broken by bae868ca.
- bde2f1847f51 12.17 landed
- 45d1fe8b53d4 13.13 landed
- 3d413c5a76fa 14.10 landed
- 99d334a187ae 15.5 landed
- 10d0591ea227 16.1 landed
- becfbdd6c1c9 17.0 landed
-
Don't use Perl pack('Q') in 039_end_of_wal.pl.
- 82314dbfca7f 12.17 landed
- 07896f468f23 13.13 landed
- afa504ba2f5d 14.10 landed
- 21b4c3ca0b22 15.5 landed
- cc58607b019a 16.1 landed
- 91b0e85aa0ad 17.0 landed
-
Don't trust unvalidated xl_tot_len.
- e8f3c0687116 12.17 landed
- 6606c57162cb 13.13 landed
- 3ce3b53d76a3 14.10 landed
- f4d152edd8f3 15.5 landed
- ce497f648e2d 16.1 landed
- bae868caf222 17.0 landed
-
Make recovery report error message when invalid page header is found.
- 7b03d3a3ba45 12.17 landed
- 5dc093eacef1 13.13 landed
- 2f13e8d9ec28 14.10 landed
-
Add more protections in WAL record APIs against overflows
- 8fcb32db98ed 16.0 cited
Attachments
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch (text/x-patch) patch v8-0001
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch.16 (application/octet-stream)
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch.15 (application/octet-stream)
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch.14 (application/octet-stream)
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch.13 (application/octet-stream)
- v8-0001-Don-t-trust-unvalidated-xl_tot_len.patch.12 (application/octet-stream)
On Wed, Sep 20, 2023 at 1:00 AM Alexander Lakhin <exclusion@gmail.com> wrote: > I've tested this patch version on Debian 9 and it works fine now. Progress... > But as to wal_log_hints, I see that v7 patches work for REL_12_STABLE and > REL_13_STABLE, but not for other branches, though v6 patches definitely > failed on REL_12_STABLE and REL_13_STABLE too. So the behavior improved, > but not for all versions, for some reason (I haven't looked deeper yet). Ahh, yeah, there was a second problem screwing up the LSN accounting. I was trying to write correct xl_prev links, but also emitting optional padding records to get into the right position (depending on initial conditions varying between branches etc), and I forgot about the extra COMMIT records that emit_message() generates. Which, I guess, comes back to Michael's observation that this would all be a bit easier if we had a way to emit and flush a single record... The solution in this version is to call get_insert_len() instead of using the result of emit_message() for the values returned by the advance_XXX() functions. The result of emit_message() is actually the LSN of the following COMMIT record so can't be used directly for building xl_prev chains. > Also I've noticed a few minor discrepancies in the patches. > A commit message in patch.15 contains the sentence "We should fix ...", > not "We could fix ...", as in commit messages for other versions. > Also, patch.12 contains a duplicated "Reviewed-by" string. > And may be "xlp_prev" is a typo? Fixed.