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-03-11T03:40:21Z
Lists: pgsql-bugs
On Thu, Mar 10, 2022 at 7:13 PM Andres Freund <andres@anarazel.de> wrote: > > NB: I intend to commit this revision of the patch (or something pretty > > close to it) in the next few days, barring any objections. > > WFM. Cool. > > On Wed, Mar 9, 2022 at 4:25 PM Andres Freund <andres@anarazel.de> wrote: > > > I think it'd be nicer if we did the horizon determination after allocating > > > space for dead tuples... But it's still better than today, so... > > > > Why would it be nicer? > > Large allocation can take a bit. Especially dead_item_alloc() sneakily > initializes parallelism (which is darn ugly). Determining the horizon after > doing expensive stuff gives you a slightly better horizon... I'm confused. You recently said "I don't think the minor optimization [delaying establishing vistest] does anything (which I had stated wrongly at some point in this thread)". But you now seem to be saying that delaying establishing vistest has at least some small value as an optimization. At least in theory. > The whole s/nblocks/rel_pages/ seems like it should be done separately. I'll break the mechanical s/nblocks/rel_pages/ out into a dedicated commit, then. -- 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