agora inbox for pgsql-committers@postgresql.org
help / color / mirror / Atom feedFrom: Robert Haas <rhaas@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: walsummarizer: Guard against WAL files whose tail ends are not v
Date: Wed, 22 Jul 2026 13:09:51 +0000
Message-ID: <E1wmWhr-00000000J61-450V@gemulon.postgresql.org> (raw)
walsummarizer: Guard against WAL files whose tail ends are not valid.
SummarizeWAL documents that maximum_lsn should be passed as "the switch
point when reading a historic timeline, or the most-recently-measured end of
WAL when reading the current timeline." But the caller always passed the
most recently measured end-of-WAL even when reading from a historic
timeline, due to an oversight on my part. Fix that.
As far as I can determine, for this to become an issue in practice, it's
necessary to have a corrupted WAL file in the archive. SummarizeWAL checks
that every record it processes both starts and ends before switch_lsn; so if
all the WAL files in the archive are valid, SummarizeWAL will still discover
where it should stop summarizing and do the right thing. However, if
there's a corrupted file in the WAL archive, and if it is also the case that
the end of the current timeline has advanced past the switch point, then the
incorrect maximum_lsn value can result in trying to read an invalid record
and erroring out, which leads repeatedly retrying and failing with an error
every time.
One way this could occur is if a new primary is promoted and creates a
.partial file, and the user manually renames that file to remove the suffix,
and it is then archived. In that situation, the tail end of the file need
not be valid WAL, and that could lead to a stuck WAL summarizer.
Reported-by: Fabrice Chapuis <fabrice636861@gmail.com>
Analyzed-by: Thom Brown <thom@linux.com> (using claude)
Discussion: http://postgr.es/m/CAA5-nLDdvGMkN6Z-GaHGHG5T7QWEgv4YoHO7XvOJbeD00cghNg@mail.gmail.com
Backpatch-through: 17
Branch
------
REL_19_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/bdcea66f0f3b2f16c51d6c95bb9d0bb317fdfd99
Modified Files
--------------
src/backend/postmaster/walsummarizer.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
view thread (4+ messages) latest in thread
Message-ID: <E1wmWhr-00000000J61-450V@gemulon.postgresql.org>
Permalink: ../E1wmWhr-00000000J61-450V@gemulon.postgresql.org/
Also on: postgresql.org/message-id/E1wmWhr-00000000J61-450V@gemulon.postgresql.org
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-committers@postgresql.org
Cc: rhaas@postgresql.org, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: walsummarizer: Guard against WAL files whose tail ends are not v
In-Reply-To: <E1wmWhr-00000000J61-450V@gemulon.postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox