pgsql: pg_walinspect: fix case where flush LSN is in the middle of a re - Mailing list pgsql-committers

From Jeff Davis
Subject pgsql: pg_walinspect: fix case where flush LSN is in the middle of a re
Date
Msg-id E1nkpqf-001tOJ-EQ@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
pg_walinspect: fix case where flush LSN is in the middle of a record.

Instability in the test for pg_walinspect revealed that
pg_get_wal_records_info_till_end_of_wal(x) would try to decode all the
records with a start LSN earlier than the flush LSN, even though that
might include a partial record at the end of the range. In that case,
read_local_xlog_page_no_wait() would return NULL when it tried to read
past the flush LSN, which would be interpreted as an error by the
caller. That caused a test failure only on a BF animal that had been
restarted recently, but could be expected to happen in the wild quite
easily depending on the alignment of various parameters.

Fix by using private data in read_local_xlog_page_no_wait() to signal
end-of-wal to the caller, so that it can be properly distinguished
from a real error.

Discussion: https://postgr.es/m/Ymd/e5eeZMNAkrXo%40paquier.xyz
Discussion: https://postgr.es/m/111657.1650910309@sss.pgh.pa.us

Authors: Thomas Munro, Bharath Rupireddy.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ed57cac84d1c5642737dab1e4c4b8cb4f0c4305f

Modified Files
--------------
contrib/pg_walinspect/pg_walinspect.c  | 59 +++++++++++++++++++---------------
src/backend/access/transam/xlogutils.c | 11 +++++++
src/include/access/xlogutils.h         |  6 ++++
3 files changed, 50 insertions(+), 26 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Tighten enforcement of variable CONSTANT markings in plpgsql.
Next
From: Andrew Dunstan
Date:
Subject: Re: pgsql: Remove command checks in tests of pg_basebackup and pg_receivewa