Commit 36c1c916 authored by Fujii Masao's avatar Fujii Masao

Make regression test for multiple synchronous standbys more stable.

The regression test checks whether the output of pg_stat_replication is
expected or not after changing synchronous_standby_names and reloading
the configuration file. Regarding this test logic, previously there was
a timing issue which made the test result unstable. That is,
pg_stat_replication could return unexpected result during small window
after the configuration file was reloaded before new setting value
took effect, and which made the test fail.

This commit changes the test logic so that it uses a loop with a timeout
to give some room for the test to pass. Now the test fails only when
pg_stat_replication keeps returning unexpected result for 30 seconds.

Michael Paquier
parent f0e766bd
......@@ -22,7 +22,23 @@ sub test_sync_state
$self->reload;
}
my $result = $self->safe_psql('postgres', $check_sql);
my $timeout_max = 30;
my $timeout = 0;
my $result;
# A reload may take some time to take effect on busy machines,
# hence use a loop with a timeout to give some room for the test
# to pass.
while ($timeout < $timeout_max)
{
$result = $self->safe_psql('postgres', $check_sql);
last if ($result eq $expected);
$timeout++;
sleep 1;
}
is($result, $expected, $msg);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment