Re: corruption of WAL page header is never reported - Mailing list pgsql-hackers

From Fujii Masao
Subject Re: corruption of WAL page header is never reported
Date
Msg-id c6f938ac-43ad-d3d1-a502-5322f68ed69b@oss.nttdata.com
Whole thread Raw
In response to corruption of WAL page header is never reported  (Yugo NAGATA <nagata@sraoss.co.jp>)
Responses Re: corruption of WAL page header is never reported
List pgsql-hackers

On 2021/09/06 3:11, Alvaro Herrera wrote:
> On 2021-Sep-03, Kyotaro Horiguchi wrote:
> 
>> diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
>> index 24165ab03e..b621ad6b0f 100644
>> --- a/src/backend/access/transam/xlog.c
>> +++ b/src/backend/access/transam/xlog.c
>> @@ -12496,9 +12496,21 @@ retry:
>>        *
>>        * Validating the page header is cheap enough that doing it twice
>>        * shouldn't be a big deal from a performance point of view.
>> +     *
>> +     * Don't call XLogReaderValidatePageHeader here while not in standby mode
>> +     * so that this function won't return with a valid errmsg_buf.
>>        */
>> -    if (!XLogReaderValidatePageHeader(xlogreader, targetPagePtr, readBuf))
>> +    if (StandbyMode &&
>> +        !XLogReaderValidatePageHeader(xlogreader, targetPagePtr, readBuf))
> 
> OK, but I don't understand why we have a comment that says (referring to
> non-standby mode) "doing it twice shouldn't be a big deal", followed by
> "Don't do it twice while not in standby mode" -- that seems quite
> contradictory.  I think the new comment should overwrite the previous
> one, something like this:
> 
> -     * Validating the page header is cheap enough that doing it twice
> -     * shouldn't be a big deal from a performance point of view.
> +     *
> +     * We do this in standby mode only,
> +     * so that this function won't return with a valid errmsg_buf.

Even if we do this while NOT in standby mode, ISTM that this function doesn't
return with a valid errmsg_buf because it's reset. So probably the comment
should be updated as follows?

-------------------------
We don't do this while not in standby mode because we don't need to retry
immediately if the page header is not valid. Instead, XLogReadRecord() is
responsible to check the page header.
-------------------------

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



pgsql-hackers by date:

Previous
From: Zhihong Yu
Date:
Subject: Re: ORDER BY pushdowns seem broken in postgres_fdw
Next
From: Fujii Masao
Date:
Subject: Re: pgbench bug candidate: negative "initial connection time"