Re: Allow cancelling VACUUM of nbtrees with corrupted right links

From: Peter Geoghegan <pg(at)bowt(dot)ie>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Allow cancelling VACUUM of nbtrees with corrupted right links
Date: 2018-06-27 19:49:56
Message-ID: CAH2-Wz=hW6UCF6OEEiHz-dnmHoEgXdztZEM+YM-AzYOdAy1w9Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Jun 27, 2018 at 12:18 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> It's possibly wrong that it's unreachable - I've just not managed to get
> there. If somebody has an idea how to build a reproducible case to reach
> it...

Set a breakpoint in _bt_unlink_halfdead_page() after the initial
"LockBuffer(leafbuf, BUFFER_LOCK_UNLOCK);", and then provoke a page
split in the left sibling by carefully inserting values that belong
within its part of the key space? I would probably attempt this with
an index on text, so that I could contrive as many key values that
belong on the left sibling as needed.

You're probably looking at a test-case that doesn't involve a
multi-level deletion, where the leaf and target page are the same. Not
sure if you want to reproduce the multi-level deletion case
independently.

--
Peter Geoghegan

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2018-06-27 19:52:41 Re: Allow cancelling VACUUM of nbtrees with corrupted right links
Previous Message Alvaro Herrera 2018-06-27 19:43:46 Re: Performance regression with PostgreSQL 11 and partitioning