Commit d8f3b021 authored by Alvaro Herrera's avatar Alvaro Herrera

Make new replication slot test code less racy

The new test code added in ead9e51e8236 is racy -- it hinges on
shared-memory state, which changes before the WARNING message is logged.
Put it the other way around.

Backpatch to 13.

Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/202107161809.zclasccpfcg3@alvherre.pgsql
parent 4466b38e
...@@ -177,18 +177,21 @@ ok( !find_in_log( ...@@ -177,18 +177,21 @@ ok( !find_in_log(
my $logstart = get_log_size($node_primary); my $logstart = get_log_size($node_primary);
advance_wal($node_primary, 7); advance_wal($node_primary, 7);
# This slot should be broken, wait for that to happen # wait until the WARNING is issued
$node_primary->poll_query_until( my $invalidated = 0;
'postgres', for (my $i = 0; $i < 10000; $i++)
qq[SELECT wal_status = 'lost' FROM pg_replication_slots {
WHERE slot_name = 'rep1']); if (find_in_log(
$node_primary,
# WARNING should be issued "invalidating slot \"rep1\" because its restart_lsn [0-9A-F/]+ exceeds max_slot_wal_keep_size",
ok( find_in_log( $logstart))
$node_primary, {
"invalidating slot \"rep1\" because its restart_lsn [0-9A-F/]+ exceeds max_slot_wal_keep_size", $invalidated = 1;
$logstart), last;
'check that the warning is logged'); }
usleep(100_000);
}
ok($invalidated, 'check that slot invalidation has been logged');
$result = $node_primary->safe_psql( $result = $node_primary->safe_psql(
'postgres', 'postgres',
......
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