Fix checksum state transition during promotion
Daniel Gustafsson <dgustafsson@postgresql.org>
Author:
Daniel Gustafsson <dgustafsson@postgresql.org>
Date: 2026-05-29T19:26:18Z
Releases:
19 (unreleased)
Fix checksum state transition during promotion When a standby is promoted to primary during checksum enabling when the state is inprogress-on, the standby shall revert the state to off since checksums weren't fully enabled at the time of the crash. Consider the following scenario: 1) primary/standby cluster has checksums off 2) primary starts enabling checksums 3) primary moves to inprogress-on 4) standby receives that and moves to inprogress-on too 5) primary crashes 6) standby gets promoted, and does the StartupXLOG thing 7) standby moves from inprogress-on back to off Any processes in the standby need to be informed at step 6 to change state with a procsignalbarrier, else they will stay in inprogress-on while new backends will see the state as off. StartupXLOG failed to emit a procsignalbarrier which caused inconsistent state in the node promoted to primary. Fixed by emitting a procsignalbarrier during promotion, and adding a new test for this scenario. Author: Daniel Gustafsson <daniel@yesql.se> Reported-by: Tomas Vondra <tomas@vondra.me> Discussion: https://postgr.es/m/f1281cf3-89a3-4936-9bc5-2a5a6291229f@vondra.me
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/transam/xlog.c | modified | +4 −1 |
| src/test/modules/test_checksums/t/003_standby_restarts.pl | modified | +58 −0 |
Discussion
- Changing the state of data checksums in a running cluster 144 messages · 2024-07-03 → 2026-07-02