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: Noah Misch <noah@leadboat.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-08-12T00:20:32Z
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

On Sat, Aug 12, 2023 at 11:56:45AM +1200, Thomas Munro wrote:
> On Sat, Aug 12, 2023 at 2:00 AM Noah Misch <noah@leadboat.com> wrote:
>> On Fri, Aug 11, 2023 at 03:08:26PM +0900, Michael Paquier wrote:
>> I recall earlier messages theorizing that it was just harder to hit in v14, so
>> I'm disinclined to stop at v15.  I think the main choice is whether to stop at
>> v11 (normal choice) or v12 (worry about breaking the last v11 point release).
>> I don't have a strong opinion between those.

Okay.  I wouldn't be inclined to patch v11 for that, FWIW, as this
code path is touched by recovery and more.  At least it does not seem 
worth taking any risk compared to the potential gain.

> Thanks for working on this.
> 
> I wonder if we need a more explicit way to construct pages with the
> right bits to reach interesting test cases and get full enough
> coverage...  (Cf throwing SQL at the WAL to see if it sticks.)

You mean SQL functions that write an arbitrary set of bytes at a given
LSN, to trigger some expected behavior on a follow-up crash recovery?
--
Michael