From: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Fix assert failure when decoding XLOG_PARAMETER_CHANGE on primary |
Date: | 2025-01-23 22:34:38 |
Message-ID: | CAD21AoABoFwGY_Rh2aeE6tEq3HkJxf0c6UeOXn4VV9v6BAQPSw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi all,
When a standby replays a XLOG_PARAMETER_CHANGE record that lowers
wal_level from logical, we invalidate all logical slots only when the
standby is in hot standby mode:
if (InRecovery && InHotStandby &&
xlrec.wal_level < WAL_LEVEL_LOGICAL &&
wal_level >= WAL_LEVEL_LOGICAL)
InvalidateObsoleteReplicationSlots(RS_INVAL_WAL_LEVEL,
0, InvalidOid,
InvalidTransactionId);
However, it's possible that this record is replayed when not in hot
standby mode and the slot is used after the promotion. In this case,
the following Assert in xlog_decode() fails:
/*
* This can occur only on a standby, as a primary would
* not allow to restart after changing wal_level < logical
* if there is pre-existing logical slot.
*/
Assert(RecoveryInProgress());
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("logical decoding on standby requires \"wal_level\" >=
\"logical\" on the primary")));
Here is brief steps to reproduce this issue:
1. setup the primary and the standby servers (with hot_standby=on).
2. create a logical slot on the standby.
3. on standby, set hot_standby=off and restart.
4. on primary, lower wal_level to replica and restart.
5. promote the standby and execute the logical decoding.
I've attached a small patch to fix this issue. With the patch, we
invalidate all logical slots even when not in hot standby, that is,
the patch just removes InHotStandby from the condition. Thoughts?
Regards,
--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com
Attachment | Content-Type | Size |
---|---|---|
fix_assertion.patch | application/octet-stream | 1002 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Smith | 2025-01-23 23:10:56 | Re: Pgoutput not capturing the generated columns |
Previous Message | Peter Geoghegan | 2025-01-23 22:34:17 | Re: Adding skip scan (including MDAM style range skip scan) to nbtree |