Hi, On Thu, Feb 29, 2024 at 02:56:23PM +0900, Michael Paquier wrote: > On Wed, Feb 28, 2024 at 06:20:41AM +0000, Bertrand Drouvot wrote: > > On Wed, Feb 28, 2024 at 01:26:46PM +0900, Michael Paquier wrote: > >> On Tue, Feb 27, 2024 at 01:39:59PM +0000, Bertrand Drouvot wrote: > >> > So, I'm ok with the new helper too. > >> > >> If both of you feel strongly about that, I'm OK with introducing > >> something like that. > > > > Thanks! > > (Cough. As in, "feel free to send a patch" on top of what's already > proposed if any of you feel that's better at the end.) > > ;)
okay ;-) Something like the attached? Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
>From 6593970648c6cff3150e602746bf6cadffb728cc Mon Sep 17 00:00:00 2001 From: Bertrand Drouvot <bertranddrouvot...@gmail.com> Date: Thu, 29 Feb 2024 08:31:28 +0000 Subject: [PATCH v1] Adding wait_for_injection_point helper --- src/test/perl/PostgreSQL/Test/Cluster.pm | 24 +++++++++++++++++++ .../recovery/t/041_checkpoint_at_promote.pl | 8 +------ 2 files changed, 25 insertions(+), 7 deletions(-) 57.1% src/test/perl/PostgreSQL/Test/ 42.8% src/test/recovery/t/ diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 44c1bb5afd..414b4ef421 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -2742,6 +2742,30 @@ sub lsn =pod +=item $node->wait_for_injection_point(injection_name, backend_type) + +Wait for the backend_type to wait for the injection point name. + +=cut + +sub wait_for_injection_point +{ + my ($self, $injection_name, $backend_type) = @_; + + $self->poll_query_until( + 'postgres', qq[ + SELECT count(*) > 0 FROM pg_stat_activity + WHERE backend_type = '$backend_type' AND wait_event = '$injection_name' + ]) + or die + "timed out waiting for the backend type to wait for the injection point name"; + + print "done\n"; + return; +} + +=pod + =item $node->wait_for_catchup(standby_name, mode, target_lsn) Wait for the replication connection with application_name standby_name until diff --git a/src/test/recovery/t/041_checkpoint_at_promote.pl b/src/test/recovery/t/041_checkpoint_at_promote.pl index 47381a2c82..3d6faabc0b 100644 --- a/src/test/recovery/t/041_checkpoint_at_promote.pl +++ b/src/test/recovery/t/041_checkpoint_at_promote.pl @@ -79,13 +79,7 @@ $node_primary->wait_for_replay_catchup($node_standby); # Wait until the checkpointer is in the middle of the restart point # processing, relying on the custom wait event generated in the # wait callback used in the injection point previously attached. -ok( $node_standby->poll_query_until( - 'postgres', - qq[SELECT count(*) FROM pg_stat_activity - WHERE backend_type = 'checkpointer' AND wait_event = 'CreateRestartPoint' ;], - '1'), - 'checkpointer is waiting in restart point' -) or die "Timed out while waiting for checkpointer to run restart point"; +$node_standby->wait_for_injection_point('CreateRestartPoint','checkpointer'); # Check the logs that the restart point has started on standby. This is # optional, but let's be sure. -- 2.34.1