Re: relfrozenxid may disagree with row XIDs after 1ccc1e05ae
Andres Freund <andres@anarazel.de>
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
Hi, On 2024-04-15 13:52:04 -0700, Noah Misch wrote: > On Mon, Apr 15, 2024 at 12:35:59PM -0400, Robert Haas wrote: > > I propose to remove this open item from > > https://wiki.postgresql.org/wiki/PostgreSQL_17_Open_Items > > > > On the original thread (BUG #17257), Alexander Lakhin says that he > > can't reproduce this after dad1539ae/18b87b201. Based on my analysis > > I have observed the infinite loop in production with v15.5, so that > non-reproduce outcome is a limitation in the test procedure. (v14.2 added > those two commits.) How closely have you analyzed those production occurences? It's not too hard to imagine some form of corruption that leads to such a loop, but which isn't related to the horizon going backwards? E.g. a corrupted HOT chain can lead to heap_page_prune() not acting on a DEAD tuple, but lazy_scan_prune() would then encounter a DEAD tuple. > > of the code, I suspect that there is a residual bug, or at least that > > there was one prior to 6f47f6883151366c031cd6fd4011e66d2c702a90. > > Can you say more about how 6f47f6883151366c031cd6fd4011e66d2c702a90 mitigated > the regression that 1ccc1e05ae introduced? Thanks for discovering that. Which regression has 1ccc1e05ae actually introduced? As I pointed out upthread, the proposed path to corruption doesn't seem to actually lead to corruption, "just" an error? Which actually seems considerably better than an endless retry loop that cannot be cancelled. Greetings, Andres Freund