Re: Allow cancelling VACUUM of nbtrees with corrupted right links

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Peter Geoghegan <pg@bowt.ie>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2018-06-27T20:11:15Z
Lists: pgsql-hackers
On 2018-06-27 13:02:25 -0700, Peter Geoghegan wrote:
> On Wed, Jun 27, 2018 at 12:52 PM, Andres Freund <andres@anarazel.de> wrote:
> > A related question is if it matters - without complicating the code I
> > don't see how we could release all the locks in that loop. Therefore no
> > interrupts can be accepted.  I hope I'm missing something?
> 
> I agree.
> 
> In general, page deletion is the most complicated part of nbtree
> concurrency, by far (if we just had the basic L&Y, the concurrency
> aspects would be far easier to grasp). Doing better in
> _bt_unlink_halfdead_page() seems extremely difficult, and very
> unlikely to be worthwhile.

Well, I don't really want to generally do better. Just be able to check
for interrupts ;)

Greetings,

Andres Freund


Commits

  1. Check for interrupts inside the nbtree page deletion code.