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, Fujii Masao <masao.fujii@oss.nttdata.com>
Date: 2023-09-16T00:20:36Z
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, Sep 16, 2023 at 12:03 PM Michael Paquier <michael@paquier.xyz> wrote:
> > [1] https://github.com/macdice/postgres/commits/fix-12
>
> Hmm.  What was the test that failed?

$ make -s -C src/test/recovery/ check PROVE_TESTS=t/039*
t/039_end_of_wal.pl .. 4/?
#   Failed test 'xlp_magic zero'
#   at t/039_end_of_wal.pl line 312.

not ok 5 - xlp_magic zero

Where the log should say "invalid magic number 0000" I see:

2023-09-16 12:13:07.331 NZST [156812] LOG:  record with incorrect
prev-link 0/16B60C0 at 0/16B6120

It has to do with initial WAL position after initdb, because I get
this only on Debian, on REL_12_STABLE (with the commit listed above on
my public fix-12 branch) and only with --with-icu, but not without it,
and I can't repro it on my other local OSes.