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: Michael Paquier <michael@paquier.xyz>
Cc: Sergei Kornilov <sk@zsrv.org>, Noah Misch <noah@leadboat.com>,
Tom Lane <tgl@sss.pgh.pa.us>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-09-04T07:17:21Z
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
On Mon, Sep 4, 2023 at 3:54 PM Michael Paquier <michael@paquier.xyz> wrote: > On Mon, Sep 04, 2023 at 03:20:31PM +1200, Thomas Munro wrote: > > 1. In the place where we fail to allocate memory for an oversized > > record, I copied the comment about treating that as a "bogus data" > > condition. I suspect that we will soon be converting that to a FATAL > > error[1], and that'll need to be done in both places. > > You mean for the two callers of XLogReadRecordAlloc(), even for the > case where !allow_oversized? Using a FATAL on non-FRONTEND would be > the quickest fix, indeed, but there are argument for standbys where we > could let these continue, as well. That would be an improvement over > the always-FATAL on OOM, of course. I just mean the two places where "bogus data" is mentioned in that v5 patch. > > But if you > > want to be able to distinguish garbage from out-of-memory, and thereby > > end-of-wal from a FATAL please-insert-more-RAM condition, I think > > you'd really need this industrial strength validation in all affected > > branches, and I'd have more work to do, right? The weak validation we > > are fixing here is the *real* underlying problem going back many > > years, right? > > Getting the same validation checks for all the branches would be nice. > FATAL-ing on OOM to force recovery to happen again is a better option > than assuming that it is the end of recovery. I am OK to provide > patches for all the branches for the sake of this thread, if that > helps. Switching to a hard FATAL on OOM for the WAL reader in the > backend is backpatchable, but I'd rather consider that on a different > thread once the better checks for the record header are in place. OK, so it sounds like you want to go back to 12. Let me see if I can get this TAP test to work in 12... more tomorrow.