On Wed, Jul 10, 2024 at 02:14:55PM +0900, Michael Paquier wrote: > +# Only non-superuser roles granted pg_signal_autovacuum_worker are allowed > +# to signal autovacuum workers. This test uses an injection point located > +# at the beginning of the autovacuum worker startup.
nitpick: Superuser roles are also allowed to signal autovacuum workers. Maybe this should read "Only roles with privileges of..." > +# Create some content and set an aggressive autovacuum. > +$node->safe_psql( > + 'postgres', qq( > + CREATE TABLE tab_int(i int); > + ALTER TABLE tab_int SET (autovacuum_vacuum_cost_limit = 1); > + ALTER TABLE tab_int SET (autovacuum_vacuum_cost_delay = 100); > +)); > + > +$node->safe_psql( > + 'postgres', qq( > + INSERT INTO tab_int VALUES(1); > +)); > + > +# Wait until an autovacuum worker starts. > +$node->wait_for_event('autovacuum worker', 'autovacuum-worker-start'); I'm not following how this is guaranteed to trigger an autovacuum quickly. Shouldn't we set autovacuum_vacuum_insert_threshold to 1 so that it is eligible for autovacuum? > +# Wait for the autovacuum worker to exit before scanning the logs. > +$node->poll_query_until('postgres', > + "SELECT count(*) = 0 FROM pg_stat_activity " > + . "WHERE pid = $av_pid AND backend_type = 'autovacuum worker';"); WFM. Even if the PID is quickly reused, this should work. We just might end up waiting a little longer. Is it worth testing cancellation, too? -- nathan