diff --git a/src/test/recovery/t/007_sync_rep.pl b/src/test/recovery/t/007_sync_rep.pl index c257b6e..908fe49 100644 --- a/src/test/recovery/t/007_sync_rep.pl +++ b/src/test/recovery/t/007_sync_rep.pl @@ -22,8 +22,28 @@ sub test_sync_state $self->reload; } - my $result = $self->safe_psql('postgres', $check_sql); - is($result, $expected, $msg); + my $timeout_max = 30; + my $timeout = 0; + my $test_passed = 0; + + # 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) + { + my $result = $self->safe_psql('postgres', $check_sql); + + if ($result eq $expected) + { + $test_passed = 1; + last; + } + + $timeout++; + sleep 1; + } + + ok($test_passed, $msg); } # Initialize master node