> IIUC after an immediate shutdown all pgstat entries are wiped out so > the server doesn't have any pgstat entries for databases at this > point. And since we don't run autovacuum on databases that have no > pg_stat entries, no autovacuum worker worked on the 'postgres' > database. Please try executing any query (e.g. 'select 1') on the > 'postgres' database after the restart, which creates a pgstat entry > for the database. > > > sleep(5); > > While the test script sleeps for 5 seconds, the server restarts after > a crash. So even if the assertion failure happens, the test would > appear to be successful. I think you can set 'restart_after_crash = > off' and execute another query using safe_psql() after the sleep. That > way, the test ends up with safe_psql() failure because the database > server is not running. >
Hi, thank you for your suggestions! But they did not help me. Autovacuum does not want to start :( ``` use strict; use warnings; use PostgreSQL::Test::Cluster; use PostgreSQL::Test::Utils; my $node = PostgreSQL::Test::Cluster->new('main'); $node->init; $node->append_conf( 'postgresql.conf', qq[ autovacuum = on autovacuum_naptime = 1s autovacuum_max_workers = 1 restart_after_crash = off ]); $node->start; my $psql1 = $node->interactive_psql('postgres'); $psql1->query("create temp table test (a int primary key);"); $node->stop('immediate'); sleep(5); $node->start; sleep(3); $node->restart; my $psql2 = $node->interactive_psql('postgres'); $psql2->query('SELECT 1;'); $psql2->query('SELECT 1;'); my $regexp = qr/autovacuum/; my $offset = 0; $node->wait_for_log($regexp, $offset); done_testing(); ``` Best Regards, Stepan Neretin.