Re: Assertion failure when autovacuum drops orphan temp indexes.

Masahiko Sawada <sawada.mshk@gmail.com>

From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Stepan Neretin <sndcppg@gmail.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2024-10-28T00:19:45Z
Lists: pgsql-hackers

Attachments

On Sun, Oct 27, 2024 at 3:33 AM Stepan Neretin <sndcppg@gmail.com> wrote:
>
>
>
>>
>> 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 :(
>

I've attached the TAP test that I meant.

Regards,

-- 
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

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.