1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-24 00:23:06 +03:00

Add PostgreSQL::Test::Cluster::wait_for_event()

Per a demand from the author and the reviewer of this commit, this adds
to Cluster.pm a helper routine that can be used to monitor when a
process reaches a wanted wait event.  This can be used in combination
with the module injection_points for the "wait" callback, though it is
not limited to it as this monitors pg_stat_activity for a wait_event and
a backend_type.

Author: Bertrand Drouvot
Reviewed-by: Andrey Borodin
Discussion: https://postgr.es/m/ZeBB4RMPEZ06TcdY@ip-10-97-1-34.eu-west-3.compute.internal
This commit is contained in:
Michael Paquier
2024-03-04 10:25:50 +09:00
parent 6782709df8
commit eca2c1ea85
2 changed files with 24 additions and 7 deletions

View File

@@ -2742,6 +2742,29 @@ sub lsn
=pod
=item $node->wait_for_event(wait_event_name, backend_type)
Poll pg_stat_activity until backend_type reaches wait_event_name.
=cut
sub wait_for_event
{
my ($self, $backend_type, $wait_event_name) = @_;
$self->poll_query_until(
'postgres', qq[
SELECT count(*) > 0 FROM pg_stat_activity
WHERE backend_type = '$backend_type' AND wait_event = '$wait_event_name'
])
or die
qq(timed out when waiting for $backend_type to reach wait event '$wait_event_name');
return;
}
=pod
=item $node->wait_for_catchup(standby_name, mode, target_lsn)
Wait for the replication connection with application_name standby_name until