Re: corruption of WAL page header is never reported
От | Kyotaro Horiguchi |
---|---|
Тема | Re: corruption of WAL page header is never reported |
Дата | |
Msg-id | 20210903.170815.2152681130338917272.horikyota.ntt@gmail.com обсуждение исходный текст |
Ответ на | Re: corruption of WAL page header is never reported (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Список | pgsql-hackers |
At Fri, 03 Sep 2021 16:55:36 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in > > Yes, I'm fine with your latest patch. > > Thanks. Maybe some additional comment is needed. Something like this. regards. -- Kyotaro Horiguchi NTT Open Source Software Center 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)) { + /* + * emit this error right now then retry this page immediately + * the message is already translated + */ + if (xlogreader->errormsg_buf[0]) + ereport(emode_for_corrupt_record(emode, EndRecPtr), + (errmsg_internal("%s", xlogreader->errormsg_buf))); + /* reset any error XLogReaderValidatePageHeader() might have set */ xlogreader->errormsg_buf[0] = '\0'; goto next_record_is_invalid;
В списке pgsql-hackers по дате отправления: