From: Alvaro Herrera Date: Wed, 23 Mar 2022 18:23:51 +0000 (+0100) Subject: pg_upgrade: Upgrade an Assert to a real 'if' test X-Git-Tag: REL_13_7~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca26c64581b529b2191757dbb27b94c6b0c101be;p=thirdparty%2Fpostgresql.git pg_upgrade: Upgrade an Assert to a real 'if' test It seems possible for the condition being tested to be true in production, and nobody would never know (except when some data eventually becomes corrupt?). Author: Álvaro Herrera Discussion: https://postgr.es/m//202109040001.zky3wgv2qeqg@alvherre.pgsql --- diff --git a/src/bin/pg_rewind/parsexlog.c b/src/bin/pg_rewind/parsexlog.c index 1a67725ec04..cb1bdc958d3 100644 --- a/src/bin/pg_rewind/parsexlog.c +++ b/src/bin/pg_rewind/parsexlog.c @@ -101,7 +101,11 @@ extractPageMap(const char *datadir, XLogRecPtr startpoint, int tliIndex, * If 'endpoint' didn't point exactly at a record boundary, the caller * messed up. */ - Assert(xlogreader->EndRecPtr == endpoint); + if (xlogreader->EndRecPtr != endpoint) + pg_fatal("end pointer %X/%X is not a valid end point; expected %X/%X", + (uint32) (endpoint >> 32), (uint32) (endpoint), + (uint32) (xlogreader->EndRecPtr >> 32), (uint32) + (xlogreader->EndRecPtr)); XLogReaderFree(xlogreader); if (xlogreadfd != -1)