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:11:56Z
Lists: pgsql-hackers
On Tue, Oct 27, 2020 at 10:56:23PM +0300, Anastasia Lubennikova wrote:
> In case you need a second opinion on the remaining patch, it still looks
> good to me.

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()).  I have
been hesitating about increasing the number of retries though to give
more room to false positives.  20 perhaps?  That would give 2s to a
disk to finish flushing a page that was caught in the middle of a
check with a sleep of 100ms, which sounds plenty enough.
--
Michael

Commits

  1. Extend PageIsVerified() to handle more custom options