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

Alexander Lakhin <exclusion@gmail.com>

From: Alexander Lakhin <exclusion@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>, 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>, pgsql-bugs@lists.postgresql.org, Fujii Masao <masao.fujii@oss.nttdata.com>
Date: 2023-09-19T13:00:06Z
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

19.09.2023 13:09, Thomas Munro wrote:
> On Tue, Sep 19, 2023 at 9:53 PM Michael Paquier<michael@paquier.xyz>  wrote:
>> On Tue, Sep 19, 2023 at 09:25:34PM +1200, Thomas Munro wrote:
>>> The problem was that the Perl functions advance_XXX() would sometimes
>>> see an "unflushed" insert position caused by hint records and other
>>> incidental stuff, and then we'd write our contrived header at a
>>> disconnected location after a bunch of (unwritten) zeroes.  The
>>> solution in this version is to start each test with
>>> emit_message($node, 0), which flushes a small record.
>>>

Thanks for the fixes!

I've tested this patch version on Debian 9 and it works fine now.
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).
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?

Best regards,
Alexander