Re: corruption of WAL page header is never reported

Fujii Masao <masao.fujii@oss.nttdata.com>

From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: nagata@sraoss.co.jp, ranier.vf@gmail.com, pgsql-hackers@postgresql.org
Date: 2021-09-10T01:38:39Z
Lists: pgsql-hackers

Attachments


On 2021/09/07 2:02, Fujii Masao wrote:
> 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.
> -------------------------

I updated the comment as above. Patch attached.

-	 * it's not valid. This may seem unnecessary, because XLogReadRecord()
+	 * it's not valid. This may seem unnecessary, because ReadPageInternal()
  	 * validates the page header anyway, and would propagate the failure up to

I also applied this change because ReadPageInternal() not XLogReadRecord()
calls XLogReaderValidatePageHeader().

Regards,

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

Commits

  1. Make recovery report error message when invalid page header is found.

  2. Fix scenario where streaming standby gets stuck at a continuation record.