diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 3e71aea71f3..b89c58118e9 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -10592,6 +10592,10 @@ VerifyOverwriteContrecord(xl_overwrite_contrecord *xlrec, XLogReaderState *state LSN_FORMAT_ARGS(xlrec->overwritten_lsn), LSN_FORMAT_ARGS(state->overwrittenRecPtr)); + /* We have safely skipped the aborted record */ + abortedRecPtr = InvalidXLogRecPtr; + missingContrecPtr = InvalidXLogRecPtr; + ereport(LOG, (errmsg("successfully skipped missing contrecord at %X/%X, overwritten at %s", LSN_FORMAT_ARGS(xlrec->overwritten_lsn), diff --git a/src/test/recovery/t/026_overwrite_contrecord.pl b/src/test/recovery/t/026_overwrite_contrecord.pl index cb7f5b68c65..d451fe6b224 100644 --- a/src/test/recovery/t/026_overwrite_contrecord.pl +++ b/src/test/recovery/t/026_overwrite_contrecord.pl @@ -15,7 +15,7 @@ plan tests => 3; # Test: Create a physical replica that's missing the last WAL file, # then restart the primary to create a divergent WAL file and observe # that the replica replays the "overwrite contrecord" from that new -# file. +# file and the standby promotes successfully. my $node = PostgresNode->get_new_node('primary'); $node->init(allows_streaming => 1); @@ -102,5 +102,8 @@ like( qr[successfully skipped missing contrecord at], "found log line in standby"); +# Verify promotion is successful +$node_standby->promote; + $node->stop; $node_standby->stop;