Re: relfrozenxid may disagree with row XIDs after 1ccc1e05ae
Peter Geoghegan <pg@bowt.ie>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Ensure vacuum removes all visibly dead tuples older than OldestXmin
- 06bf404cd07b 16.4 landed
- 45ce054c02b8 14.13 landed
- dc6354c67017 15.8 landed
-
Combine freezing and pruning steps in VACUUM
- 6dbb490261a6 17.0 cited
-
Handle non-chain tuples outside of heap_prune_chain()
- 6f47f6883151 17.0 cited
-
Fix false reports in pg_visibility
- e85662df44ff 17.0 cited
-
Remove retry loop in heap_page_prune().
- 1ccc1e05ae8f 17.0 cited
-
vacuumlazy.c: document vistest and OldestXmin.
- 73f6ec3d3c8d 15.0 cited
-
Deduplicate choice of horizon for a relation procarray.c.
- d9d8aa9bb9aa 15.0 cited
-
Remove tupgone special case from vacuumlazy.c.
- 8523492d4e34 14.0 cited
-
Simplify state managed by VACUUM.
- b4af70cb2103 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
-
Raise error when affecting tuple moved into different partition.
- f16241bef7cc 11.0 cited
On Thu, May 16, 2024 at 4:29 PM Andres Freund <andres@anarazel.de> wrote: > On 2024-05-16 16:13:35 -0400, Peter Geoghegan wrote: > > On Thu, May 16, 2024 at 3:39 PM Andres Freund <andres@anarazel.de> wrote: > > > Melanies reproducer works because there are catalog accesses that can trigger > > > a recomputation of fuzzy horizon. For testing the "easy" window for that is > > > the vac_open_indexes() < 16, because it happens after determining the horizon, > > > but before actually vacuuming. > > > > What about the call to GetOldestNonRemovableTransactionId() that takes > > place in _bt_pendingfsm_finalize()? > > Ah, good catch! That'd do it. That was definitely what happened in the problem cases I saw -- plenty of B-Tree page deletions. Plus the heap page that lazy_scan_prune actually got stuck on happened to be the first one after the first round of bulk deletes of index tuples -- *exactly* the first heap page scanned. Not just on one occasion -- there were several affected instances that I had access to at various points, that all looked like this (same workload for all of them, though). These were 14 and 15 instances (no 16 instances, likely just because 16 wasn't even really available at the time). It seems just about impossible that these details were all coincidental. -- Peter Geoghegan