Fix test instability
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 29 Jul 2022 10:50:47 +0000 (12:50 +0200)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 29 Jul 2022 10:50:47 +0000 (12:50 +0200)
On FreeBSD, the new test fails due to a WAL file being removed before
the standby has had the chance to copy it.  Fix by adding a replication
slot to prevent the removal until after the standby has connected.

Author: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Reported-by: Matthias van de Meent <boekewurm+postgres@gmail.com>
Discussion: https://postgr.es/m/CAEze2Wj5nau_qpjbwihvmXLfkAWOZ5TKdbnqOc6nKSiRJEoPyQ@mail.gmail.com

src/test/recovery/t/033_replay_tsp_drops.pl

index 9b74cb09ac3f8e528bb0735ed5cdf5d813434360..7cd55742fc078516bec560e8061b2aa2e1b5f3ad 100644 (file)
@@ -26,6 +26,7 @@ sub test_tablespace
            CREATE TABLESPACE source_ts  LOCATION '';
            CREATE TABLESPACE target_ts  LOCATION '';
            CREATE DATABASE template_db IS_TEMPLATE = true;
+           SELECT pg_create_physical_replication_slot('slot', true);
        ]);
    my $backup_name = 'my_backup';
    $node_primary->backup($backup_name);
@@ -40,10 +41,11 @@ sub test_tablespace
    # Make sure connection is made
    $node_primary->poll_query_until('postgres',
        'SELECT count(*) = 1 FROM pg_stat_replication');
+   $node_primary->safe_psql('postgres', "SELECT pg_drop_replication_slot('slot')");
 
    $node_standby->safe_psql('postgres', 'CHECKPOINT');
 
-   # Do immediate shutdown just after a sequence of CREAT DATABASE / DROP
+   # Do immediate shutdown just after a sequence of CREATE DATABASE / DROP
    # DATABASE / DROP TABLESPACE. This causes CREATE DATABASE WAL records
    # to be applied to already-removed directories.
    my $query = q[