postgres.git / summary / log / commit / refs

commit    d874a3591cc6c321f40803e6a6ce218f078d486e
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Tue Sep 08 07:48:29 2026 +0000

    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


src/test/recovery/t/026_overwrite_contrecord.pl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/recovery/t/026_overwrite_contrecord.pl b/src/test/recovery/t/026_overwrite_contrecord.pl index 78feccd9aae..66a447a724f 100644 --- a/src/test/recovery/t/026_overwrite_contrecord.pl +++ b/src/test/recovery/t/026_overwrite_contrecord.pl @@ -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; [parent: a9875e35eed1]