Re: BUG #17928: Standby fails to decode WAL on termination of primary

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Thomas Munro <thomas.munro@gmail.com>
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-05T03:19:46Z
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 →
  1. Correct assertion and comments about XLogRecordMaxSize.

  2. Fix edge-case for xl_tot_len broken by bae868ca.

  3. Don't use Perl pack('Q') in 039_end_of_wal.pl.

  4. Don't trust unvalidated xl_tot_len.

  5. Make recovery report error message when invalid page header is found.

  6. Add more protections in WAL record APIs against overflows

Attachments

On Mon, Sep 04, 2023 at 07:43:59PM +1200, Thomas Munro wrote:
> I am behind on several things, so if you want to, please go ahead!  I
> already posted a 15 version and a master version (which should also
> apply and work on 16), so we'd need 12, 13, 14.

And here you go for all the three branches, with all the tests
passing.  This change is complicated enough that it would be better to
get more eyes on the three patches for these specific branches.  Now,
this is much simpler since we don't have to worry about the
prefetching.

For these versions, it struck me that we *require* 6860198 so as the
header validation is able to correctly happen across page reads when
doing crash recovery.   I have added this change in the patches
attached for simplicity, but 6860198 should be applied first on 12~14
as an independent change.  I can do that as a first step, if you are
OK with that.

I haven't taken the time to rewrite the commit message yet for the
main patch ;p
--
Michael