agora inbox for pgsql-committers@postgresql.orghelp / color / mirror / Atom feed
pgsql: Correct logical decoding status at end of recovery with minimal 2+ messages / 1 participants [nested] [flat]
* pgsql: Correct logical decoding status at end of recovery with minimal @ 2026-07-16 19:15 Masahiko Sawada <msawada@postgresql.org> 0 siblings, 0 replies; 2+ messages in thread From: Masahiko Sawada @ 2026-07-16 19:15 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Correct logical decoding status at end of recovery with minimal WAL level. Crash recovery running with wal_level='minimal' can replay an XLOG_LOGICAL_DECODING_STATUS_CHANGE record that activates logical decoding, if the server previously ran with a higher wal_level and crashed after the last logical slot was dropped but before the checkpointer deactivated logical decoding. Replaying such a record is correct since it reflects the status at the time it was written. However, UpdateLogicalDecodingStatusEndOfRecovery() asserted that logical decoding is never active with wal_level='minimal', causing an assertion failure at the end of recovery. In production builds, logical decoding would remain active while running with wal_level='minimal'. Instead of special-casing wal_level='minimal', recompute the status at the end of recovery as usual: no logical slot can exist with wal_level='minimal' as RestoreSlotFromDisk() would have rejected it, so the recomputation always deactivates logical decoding in this case, also writing the corresponding status change record. Oversight in 67c20979ce7. Reviewed-by: Guoqing Yang <yanggq1988@126.com> Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com> Discussion: https://postgr.es/m/CAD21AoAnPAugUnDic+ESvrfXjXHk2bss9eHAD7zP0-Chy2UabA@mail.gmail.com Backpatch-through: 19 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/c209931bd40c9d47fd32903d4055a998856395d9 Modified Files -------------- src/backend/replication/logical/logicalctl.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
* pgsql: Correct logical decoding status at end of recovery with minimal @ 2026-07-16 19:15 Masahiko Sawada <msawada@postgresql.org> 0 siblings, 0 replies; 2+ messages in thread From: Masahiko Sawada @ 2026-07-16 19:15 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Correct logical decoding status at end of recovery with minimal WAL level. Crash recovery running with wal_level='minimal' can replay an XLOG_LOGICAL_DECODING_STATUS_CHANGE record that activates logical decoding, if the server previously ran with a higher wal_level and crashed after the last logical slot was dropped but before the checkpointer deactivated logical decoding. Replaying such a record is correct since it reflects the status at the time it was written. However, UpdateLogicalDecodingStatusEndOfRecovery() asserted that logical decoding is never active with wal_level='minimal', causing an assertion failure at the end of recovery. In production builds, logical decoding would remain active while running with wal_level='minimal'. Instead of special-casing wal_level='minimal', recompute the status at the end of recovery as usual: no logical slot can exist with wal_level='minimal' as RestoreSlotFromDisk() would have rejected it, so the recomputation always deactivates logical decoding in this case, also writing the corresponding status change record. Oversight in 67c20979ce7. Reviewed-by: Guoqing Yang <yanggq1988@126.com> Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com> Discussion: https://postgr.es/m/CAD21AoAnPAugUnDic+ESvrfXjXHk2bss9eHAD7zP0-Chy2UabA@mail.gmail.com Backpatch-through: 19 Branch ------ REL_19_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/baf0ec4652c2c42c76cf108bb95860b61c1eff16 Modified Files -------------- src/backend/replication/logical/logicalctl.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2026-07-16 19:15 UTC | newest] Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-07-16 19:15 pgsql: Correct logical decoding status at end of recovery with minimal Masahiko Sawada <msawada@postgresql.org> 2026-07-16 19:15 pgsql: Correct logical decoding status at end of recovery with minimal Masahiko Sawada <msawada@postgresql.org>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox