Re: BUG #17255: Server crashes in index_delete_sort_cmp() due to race condition with vacuum
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Andres Freund <andres@anarazel.de>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>,
Alexander Lakhin <exclusion@gmail.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-01-12T21:05:45Z
Lists: pgsql-bugs
On Wed, Jan 12, 2022 at 11:25 AM Andres Freund <andres@anarazel.de> wrote: > > Any blockers? > > I'm just struggling with / procrastinating on the commit message, tbh. The > whole issue is kinda complicated to explain... :/ I think that it would make sense for the commit message to frame the problem as: pruneheap.c doesn't take sufficient care when traversing HOT chains to determine their full extent, for the purposes of pruning. There was a general lack of robustness, and the snapshot scalability work happened to run into that, resulting in hot chain corruption under very specific conditions. If I was in your position I think I would resist framing the problem in this way; I'd probably be concerned that it would come off as shifting the blame elsewhere. This high level explanation of things makes the most sense to me, though. Surely that's the most important thing. -- Peter Geoghegan
Commits
-
vacuumlazy.c: Standardize rel_pages terminology.
- e370f100f05d 15.0 landed
-
vacuumlazy.c: document vistest and OldestXmin.
- 73f6ec3d3c8d 15.0 landed
-
heap pruning: Only call BufferGetBlockNumber() once.
- c702d656a283 15.0 landed
-
Fix possible HOT corruption when RECENTLY_DEAD changes to DEAD while pruning.
- dad1539aec28 14.2 landed
- 18b87b201f73 15.0 landed
-
Assert redirect pointers are sensible after heap_page_prune().
- bb42bfb5ccb5 15.0 landed
-
Remove tupgone special case from vacuumlazy.c.
- 8523492d4e34 14.0 cited
-
Recycle nbtree pages deleted during same VACUUM.
- 9dd963ae2534 14.0 cited
-
snapshot scalability: Don't compute global horizons while building snapshots.
- dc7420c2c927 14.0 cited
-
Refactor heap_page_prune so that instead of changing item states on-the-fly,
- 6f10eb21118f 8.4.0 cited