Re: Changing the state of data checksums in a running cluster
Daniel Gustafsson <daniel@yesql.se>
Attachments
- v20260319-0001-Add-proper-WAL-record-for-XLOG_CHECKPOINT_.patch (application/octet-stream) patch v20260319-0001
- v20260319-0002-Online-enabling-and-disabling-of-data-chec.patch (application/octet-stream) patch v20260319-0002
- v20260319-0003-A-stab-at-simplified-database-processing-l.patch (application/octet-stream) patch v20260319-0003
> On 19 Mar 2026, at 14:49, Daniel Gustafsson <daniel@yesql.se> wrote: >> On 18 Mar 2026, at 09:06, Heikki Linnakangas <hlinnaka@iki.fi> wrote: >> Well, if CREATE DATABASE computed the checksums, that would fix this too. Actually, at least in the default wal_log=true mode, doesn't it already do that? It goes through the buffer cache as usual, I presume the checksums will be computed too. > > That's a very good point, if the CREATE DATABASE is issued with wal_log and not > file_copy it will mark the buffers dirty during copying which will calculate > and set the checkpoint. If file_copy isn't allowed during inprogress-on then > the logic around rescanning databases for new entries could be quite > simplified. I tried to implement this on top of a fresh rebase, the attached 0003 contains a very lightly tested version of this simplified logic (there is a removal of a useless debug logging as well which while unrelated happened to sneak into this work). It now works off a single databaselist and relies on wal_copy to handle any created database regardless of which template is used (file_copy is not allowed while inprogress-on). This gives a chance to do better erroring out in case of failed databases, the code is still vulnerable to a the DROP/CREATE with the same Oid, but that seems doable to solve. It needs more testing, and likely has bugs, but I wanted to share it as soon as possible to see if was along what you were thinking. Personally I think the code a lot easier to follow with this. -- Daniel Gustafsson
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Use correct datatype for PID
- 0ca1b3010597 19 (unreleased) landed
-
Improve comments in online checksums code
- cd857dec0e0a 19 (unreleased) landed
-
Fix checksum state transition during promotion
- 5fee7cab1b87 19 (unreleased) landed
-
Fix regex searching for page verification failures in tests
- 486b9a9b9eb4 19 (unreleased) landed
-
Apply data-checksum worker throttling parameters
- 9a39056c418c 19 (unreleased) landed
-
Skip WAL for unlogged main fork during online checksum enable
- 2018bd616790 19 (unreleased) landed
-
Fix data_checksum GUC show_hook
- 75152c5dc5d3 19 (unreleased) landed
-
Improve database detection logic in datachecksumsworker
- 1df361e3d82c 19 (unreleased) landed
-
Improve handling of concurrent checksum requests
- bf25e5571b32 19 (unreleased) landed
-
Typo and spelling fixups for online checksums
- 381d19da1536 19 (unreleased) landed
-
Fix invalid checksum state transition in checkpoints
- 25b922ec5825 19 (unreleased) landed
-
Handle data_checksum state changes during launcher_exit
- 8fb8ded88956 19 (unreleased) landed
-
Test improvements for online checksums
- a0d8f4c1ae16 19 (unreleased) landed
-
Prevent pg_enable/disable_data_checksums() on standby
- b120358c612d 19 (unreleased) landed
-
Test stabilization for online checksums
- 07009121c235 19 (unreleased) landed
-
Make data checksum tests more resilient for slow machines
- 0036232ba8fb 19 (unreleased) landed
-
Formalize WAL record for XLOG_CHECKPOINT_REDO
- 097ab69d17f7 19 (unreleased) landed
-
Revert "Get rid of WALBufMappingLock"
- c13070a27b63 19 (unreleased) cited
-
Get rid of WALBufMappingLock
- bc22dc0e0ddc 18.0 cited
-
Improve grammar of options for command arrays in TAP tests
- ce1b0f9da03e 18.0 cited