1
0
mirror of https://github.com/postgres/postgres.git synced 2026-10-23 13:29:09 +03:00

Stabilize 026_overwrite_contrecord test

On slow machines, this test can take long enough to generate WAL that a
time-based checkpoint occurs before the primary is stopped. If the
checkpoint record is written to the tail WAL segment that the test later
removes, a standby initialized from the resulting backup tries to read
the missing checkpoint record and fails with a PANIC during startup.
This caused the test to fail on buildfarm member skink.

Fix this by setting checkpoint_timeout high enough to prevent unrelated
checkpoints during the test. This follows the approach used by other
recovery tests, such as 043_no_contrecord_switch.pl, that depend on a
specific WAL layout.

Backpatch to all supported versions.

Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CAHGQGwFajfjKhvNSTkTcE-wFn30p_A0_i1cvk-Q=FJhDr_5cXA@mail.gmail.com
Discussion: https://postgr.es/m/9ffdb19a-7a89-424e-925a-dd981c37f0ba@gmail.com
Backpatch-through: 14
This commit is contained in:
Fujii Masao
2026-09-08 16:48:29 +09:00
parent d2384bc30f
commit c13e961c60

View File

@@ -17,10 +17,13 @@ use Test::More;
my $node = PostgreSQL::Test::Cluster->new('primary');
$node->init(allows_streaming => 1);
# We need these settings for stability of WAL behavior.
# We need these settings for stability of WAL behavior. checkpoint_timeout
# avoids noise from checkpoint activity, and autovacuum is disabled to avoid
# any WAL activity generated by it.
$node->append_conf(
'postgresql.conf', qq(
autovacuum = off
checkpoint_timeout = '30min'
wal_keep_size = 1GB
));
$node->start;