pgsql: Check for interrupts inside the nbtree page deletion code. - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Check for interrupts inside the nbtree page deletion code.
Date
Msg-id E1faqrc-0004mN-67@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Check for interrupts inside the nbtree page deletion code.

When deleting pages the nbtree code has to walk through siblings of a
tree node. When those sibling links are corrupted that can lead to
endless loops - which are currently not interruptible.  This is
especially problematic if autovacuum is repeatedly blocked on such
indexes, as it can be hard to get out of that situation without
resorting to single user mode.

Thus add interrupt checks to appropriate places in such
loops. Unfortunately in one of the cases it's it's not easy to do so.

Between 9.3 and 9.4 the page deletion (and page split) code changed
significantly. Before it was significantly less robust against
interruptions. Therefore don't backpatch to 9.3.

Author: Andres Freund
Discussion: https://postgr.es/m/20180627191629.wkunw2qbibnvlz53@alap3.anarazel.de
Backpatch: 9.4-

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/f411108c9fe9ca087358220fe0939e4668ef69ff

Modified Files
--------------
src/backend/access/nbtree/nbtpage.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: pgsql: Check for interrupts inside the nbtree page deletion code.
Next
From: Andres Freund
Date:
Subject: pgsql: Check for interrupts inside the nbtree page deletion code.