Re: Changing the state of data checksums in a running cluster

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Tomas Vondra <tomas@vondra.me>, Andres Freund <andres@anarazel.de>, Bernd Helmle <mailings@oopsware.de>, Michael Paquier <michael@paquier.xyz>, Michael Banck <mbanck@gmx.net>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-06T17:34:44Z
Lists: pgsql-hackers
> On 6 Apr 2026, at 19:00, Alexander Lakhin <exclusion@gmail.com> wrote:
> 
> Hello Daniel,
> 
> 04.04.2026 00:46, Daniel Gustafsson wrote:
>> After many more runs on CI I ended up pushing this version, and I see BF
>> members being angry due the test not waiting for the launcher to exit. I am
>> working on a fix right now.
>> 
> 
> Maybe this is already known or even expected, but I'd still like to let
> you know that starting from f19c0ecca, I'm observing checksum errors in a
> running instance.

Thanks a lot for looking, and reporting!

> I'm getting, e.g.:
> 2026-04-06 18:09:12.077 EEST|postgres|regress_215|69d3cc86.3bfbdc|PANIC:  page verification failed, calculated checksum 40178 but expected 50558, buffer will be zeroed

I believe this is related to the same issue with visibilitymap clearing which
is discussed in:

https://postgr.es/m/CAAKRu_bn+e7F4yPFBgFbnP+syJRKyNK092bjD2LKvZW7O4Svag@mail.gmail.com

It was raised in this thread as well, but fixing it was deemed to be an
independent effort (and the above thread found it independently of the work in
this thread).

> I reproduce it rather easily (within 30 minutes) with 600 instances of
> "sqlsmith --max-queries=1000" running against separate empty databases, on
> my workstation with Ryzen 7900. I think I can compose a self-contained
> repro, if needed... If you need more information/diagnostics, I'd be glad
> to help.

If you have, or can easily make, a reproducer which can be boile down into a
test case then that would for sure help.

--
Daniel Gustafsson




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Use correct datatype for PID

  2. Improve comments in online checksums code

  3. Fix checksum state transition during promotion

  4. Fix regex searching for page verification failures in tests

  5. Apply data-checksum worker throttling parameters

  6. Skip WAL for unlogged main fork during online checksum enable

  7. Fix data_checksum GUC show_hook

  8. Improve database detection logic in datachecksumsworker

  9. Improve handling of concurrent checksum requests

  10. Typo and spelling fixups for online checksums

  11. Fix invalid checksum state transition in checkpoints

  12. Handle data_checksum state changes during launcher_exit

  13. Test improvements for online checksums

  14. Prevent pg_enable/disable_data_checksums() on standby

  15. Test stabilization for online checksums

  16. Make data checksum tests more resilient for slow machines

  17. Formalize WAL record for XLOG_CHECKPOINT_REDO

  18. Revert "Get rid of WALBufMappingLock"

  19. Get rid of WALBufMappingLock

  20. Improve grammar of options for command arrays in TAP tests