Re: Assertion failure when autovacuum drops orphan temp indexes.

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Stepan Neretin <sndcppg@gmail.com>, Nathan Bossart <nathandbossart@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2024-10-28T00:50:36Z
Lists: pgsql-hackers
On Sun, Oct 27, 2024 at 05:19:45PM -0700, Masahiko Sawada wrote:
> my $psql1 = $node->interactive_psql('postgres');
> $psql1->query("create temp table test (a int primary key);");
> sleep(3);
> 
> $node->stop('immediate');
> $node->start();
> $node->safe_psql('postgres', 'select 1');
> 
> sleep(5);
> $node->safe_psql('postgres', 'select 1');
> 
> ok(1);
> done_testing();

The assertion failure happens in an autovacuum worker.  So if you are
looking for a test that can be integrated in the tree, you could get
some inspiration from 006_signal_autovacuum.pl and rely on an
injection point wait with the existing autovacuum-worker-start.  My
2c, as it looks easy enough to avoid the hardcoded waits.
--
Michael

Commits

  1. Ensure we have a snapshot when updating pg_index in index_drop().

  2. Ensure we have a snapshot when updating pg_index entries.