Re: Changing the state of data checksums in a running cluster
Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Hi, On Wed, 29 Apr 2026 at 18:11, Daniel Gustafsson <daniel@yesql.se> wrote: > > On 28 Apr 2026, at 22:25, SATYANARAYANA NARLAPURAM < > satyanarlapuram@gmail.com> wrote: > > > Should we update ControlFile->data_checksum_version at the > end-of-recovery? If not, the disk > > is stale compared to in memory until the next checkpoint. The code two > lines below updates > > the control file anyways to set the DB_IN_PRODUCTION. Maybe combine the > update with that? > > It's no big deal if we don't do it because it will be self correct but > tools like pg_controldata > > give stale value for some time. > > I've been thinking about this one and in the end went with adding it. It > is > written already with PerformRecoveryXLogAction but we might have an > inprogress-off->off transition after that which seems better to reflect in > the > controlfile. > > Also, an off-list question on yesterday's bugfix made me realize that it > can be > simplified even further. Instead of tracking which processes need cleanup > in > the exit handler, we can simply defer installing it at all till we know > that > there will be cleanup to process. > > The attached also updates the commit messages to reflect the reviewers of > this > patchset as well as email id's. > > Thanks for the updated patchset. I applied v3 on top of current master and did a focused review/test pass. Reran the duplicate-launcher reproducer three times against v3 with a more aggressive variant, could not see any issue. The v3 launcher_exit change looks good to me. Deferring installation of the on_shmem_exit() handler until after the process has confirmed that it owns the launcher role avoids the duplicate-launcher cleanup problem. I also looked at the end-of-recovery control-file update. Copying XLogCtl->data_checksum_version into ControlFile->data_checksum_version under ControlFileLock before the existing UpdateControlFile() call is a good idea. The patchset looks good. Regards, Ayush
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