mirror of
https://github.com/postgres/postgres.git
synced 2025-05-31 00:01:57 -04:00
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
This commit is contained in:
parent
f0e766bd7f
commit
36c1c91604
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user