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

From: Alexander Lakhin <exclusion(at)gmail(dot)com>
To: Daniel Gustafsson <daniel(at)yesql(dot)se>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Tomas Vondra <tomas(at)vondra(dot)me>, Bernd Helmle <mailings(at)oopsware(dot)de>, Michael Paquier <michael(at)paquier(dot)xyz>, Michael Banck <mbanck(at)gmx(dot)net>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Changing the state of data checksums in a running cluster
Date: 2026-08-28 17:00:00
Message-ID: b2f34fd3-8e98-450e-9e8c-ac08238e9116@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello Daniel,

06.04.2026 03:20, Daniel Gustafsson wrote:
> I've pushed fixes for all of these as well as the intermittent failures that
> were seen on some BF animals, and will stare at the buildfarm for a while now.
> So far 10 or so machines have built these green so it looks decent so far.

Yesterday culicidae produced a new failure of the 005_injection.pl test:
355/405 test_checksums - postgresql:test_checksums/005_injection FAIL             14.66s   exit status 1

[11:07:55.420](0.190s) not ok 3 - ensure checksums are set to off on injection_node
[11:07:55.421](0.001s) #   Failed test 'ensure checksums are set to off on injection_node'
#   at /home/bf/bf-build/culicidae/REL_19_STABLE/pgsql/src/test/modules/test_checksums/t/DataChecksums/Utils.pm line 69.
[11:07:55.422](0.001s) #          got: 'inprogress-off'
#     expected: 'off'

I've managed to reproduce it with:
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 7f5d3b1417a..e7ec1b53f74 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -4939,2 +4939,3 @@ SetDataChecksumsOff(void)
         WaitForProcSignalBarrier(barrier);
+pg_usleep(1000000);

diff --git a/src/backend/postmaster/datachecksum_state.c b/src/backend/postmaster/datachecksum_state.c
index 443cb799915..43dd91a1480 100644
--- a/src/backend/postmaster/datachecksum_state.c
+++ b/src/backend/postmaster/datachecksum_state.c
@@ -1248,2 +1248,3 @@ DataChecksumsWorkerLauncherMain(Datum arg)
     BackgroundWorkerUnblockSignals();
+pg_usleep(rand() % 100000);

for i in {1..20}; do echo "ITERATION $i"; PROVE_TESTS="t/005*" make -s check -C src/test/modules/test_checksums/ ||
break; done

ITERATION 4
# +++ tap check in src/test/modules/test_checksums +++
t/005_injection.pl .. 1/?
#   Failed test 'ensure checksums are set to off on injection_node'
#   at .../src/test/modules/test_checksums/t/DataChecksums/Utils.pm line 69.
#          got: 'inprogress-off'
#     expected: 'off'
t/005_injection.pl .. 15/? # Looks like you failed 1 test of 17.

The first commit the test fails this way is 8fb8ded88.

I've also triggered a bit different failure:
t/005_injection.pl .. 1/?
#   Failed test 'ensure checksums are set to off on injection_node'
#   at .../src/test/modules/test_checksums/t/DataChecksums/Utils.pm line 69.
#          got: 'inprogress-on'
#     expected: 'off'
t/005_injection.pl .. 15/? # Looks like you failed 1 test of 17.

with:
--- a/src/backend/postmaster/datachecksum_state.c
+++ b/src/backend/postmaster/datachecksum_state.c
@@ -1248,2 +1248,3 @@ DataChecksumsWorkerLauncherMain(Datum arg)
     BackgroundWorkerUnblockSignals();
+pg_usleep(rand() % 100000);

@@ -1308,2 +1309,3 @@ again:
         SetDataChecksumsOnInProgress();
+pg_usleep(1000000);

It's reproduced even at 07009121c.

Could you please have a look at the test when convenient?

[1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=culicidae&dt=2026-08-27%2009%3A03%3A38

Best regards,
Alexander

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Diego 2026-08-28 17:48:44 Re: [Proposal] add portaddr like hostaddr
Previous Message Alberto Piai 2026-08-28 16:07:17 Re: Adding a stored generated column without long-lived locks