Re: relfrozenxid may disagree with row XIDs after 1ccc1e05ae
Melanie Plageman <melanieplageman@gmail.com>
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 Fri, Mar 29, 2024 at 12:05 PM Robert Haas <robertmhaas@gmail.com> wrote: > > On Fri, Mar 22, 2024 at 3:34 PM Robert Haas <robertmhaas@gmail.com> wrote: > > I think we need to understand what's actually happening here before we > > jump to solutions. I think it's clear that we can't determine a > > relfrozenxid in a way that is untethered from the decisions made while > > pruning, but surely whoever wrote this code intended for there to be > > some relationship between GlobalVisState and > > VacuumCutoffs->OldestXmin. For example, it may be that they intended > > for VacuumCutoffs->OldestXmin to always contain an XID that is older > > than any XID that the GlobalVisState could possibly have pruned; but > > they might have done that incorrectly, in such a fashion that when > > GlobalVisState->maybe_needed moves backward the intended invariant no > > longer holds. > > OK, I did some more analysis of this. I kind of feel like maybe this > should be getting more attention from Melanie (since it was the commit > of her patch that triggered the addition of this to the open items > list) or Andres (because it has been alleged to be related to the > GlobalVisTest stuff), but here we are. Agreed that I should be doing more of the analysis. I plan to spend time on this very soon. Obviously we should actually fix this on back branches, but could we at least make the retry loop interruptible in some way so people could use pg_cancel/terminate_backend() on a stuck autovacuum worker or vacuum process? - Melanie