Re: [patch] Fix checksum verification in base backups for zero page headers

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
Cc: Michael Banck <michael.banck@credativ.de>, PostgreSQL Development <pgsql-hackers@postgresql.org>
Date: 2020-10-28T07:43:44Z
Lists: pgsql-hackers
On Wed, Oct 28, 2020 at 04:11:56PM +0900, Michael Paquier wrote:
> Thanks.  The patch for v13 cannot use a macro, but one of the versions
> of upthread would do just fine.  I have been wondering about using the
> new CheckBuffer() for the purpose of the retry to make it
> concurrent-safe, but by looking at the code I think that we would run
> unto problems when trying to open through smgr.c any relation file in
> global/ as these require an invalid backend ID, and a WAL sender does
> not satisfy that (see the assertion in GetRelationPath()).

Actually, scratch that..  It looks like I am wrong here.  By using
smgropen() with InvalidBackendId and a RelFileNode built using the
path of the file being sent, similarly to what pg_rewind is doing in
isRelDataFile(), we should have everything that's needed.  This is
too complicated for a backpatch and we should have some consolidation
with pg_rewind, so using the sleep/retry for v13 sounds like a safer
path to take in the stable branch.
--
Michael

Commits

  1. Extend PageIsVerified() to handle more custom options