diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-03-23 18:22:10 +0100 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-03-23 18:22:10 +0100 |
commit | 9d92582abf918215d27659d45a4c9e78bda50aff (patch) | |
tree | 9fcd8d2cf4bc5a67a82cb870a57a7fd0ead5382e /src/backend | |
parent | dfdb2f3bf5c6ff4014de142a7b82b205224e01d3 (diff) | |
download | postgresql-9d92582abf918215d27659d45a4c9e78bda50aff.tar.gz postgresql-9d92582abf918215d27659d45a4c9e78bda50aff.zip |
Fix "missing continuation record" after standby promotion
Invalidate abortedRecPtr and missingContrecPtr after a missing
continuation record is successfully skipped on a standby. This fixes a
PANIC caused when a recently promoted standby attempts to write an
OVERWRITE_RECORD with an LSN of the previously read aborted record.
Backpatch to 10 (all stable versions).
Author: Sami Imseih <simseih@amazon.com>
Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/44D259DE-7542-49C4-8A52-2AB01534DCA9@amazon.com
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/access/transam/xlogrecovery.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index 9feea3e6ec9..8d2395dae25 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -1948,6 +1948,10 @@ xlogrecovery_redo(XLogReaderState *record, TimeLineID replayTLI) LSN_FORMAT_ARGS(xlrec.overwritten_lsn), LSN_FORMAT_ARGS(record->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), |