Fix instability in contrib/bloom TAP tests.
authorTom Lane
Tue, 28 Sep 2021 21:34:31 +0000 (17:34 -0400)
committerTom Lane
Tue, 28 Sep 2021 21:34:31 +0000 (17:34 -0400)
It turns out that the instability complained of in commit d3c09b9b1
has an embarrassingly simple explanation.  The test script waits for
the standby to flush incoming WAL to disk, but it should wait for
the WAL to be replayed, since we are testing for the effects of that
to be visible.

While at it, use wait_for_catchup instead of reinventing that logic,
and adjust $Test::Builder::Level to improve future error reports.

Back-patch to v12 where the necessary infrastructure came in
(cf. aforesaid commit).  Also back-patch 7d1aa6bf1 so that the
test will actually get run.

Discussion: https://postgr.es/m/2854602.1632852664@sss.pgh.pa.us

contrib/bloom/Makefile
contrib/bloom/t/001_wal.pl

index 6d7a612fe4be196d593642fe2447e88234a4f2b4..8a781e43889575c3b75c18b29013a1e7b324ce1b 100644 (file)
@@ -16,9 +16,7 @@ PGFILEDESC = "bloom access method - signature file based index"
 
 REGRESS = bloom
 
-# Disable TAP tests for this module for now, as these are unstable on several
-# buildfarm environments.
-# TAP_TESTS = 1
+TAP_TESTS = 1
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
index 9310af5c3dd87c6a7287dff8d31eac50c7d2dbdd..2bea1e0495768c0457181a175195d3e158faab03 100644 (file)
@@ -16,12 +16,10 @@ sub test_index_replay
 {
    my ($test_name) = @_;
 
+   local $Test::Builder::Level = $Test::Builder::Level + 1;
+
    # Wait for standby to catch up
-   my $applname = $node_standby->name;
-   my $caughtup_query =
-     "SELECT pg_current_wal_lsn() <= write_lsn FROM pg_stat_replication WHERE application_name = '$applname';";
-   $node_primary->poll_query_until('postgres', $caughtup_query)
-     or die "Timed out while waiting for standby 1 to catch up";
+   $node_primary->wait_for_catchup($node_standby);
 
    my $queries = qq(SET enable_seqscan=off;
 SET enable_bitmapscan=on;