Close race condition between datfrozen and relfrozen updates.
Noah Misch <noah@leadboat.com>
Close race condition between datfrozen and relfrozen updates. vac_update_datfrozenxid() did multiple loads of relfrozenxid and relminmxid from buffer memory, and it assumed each would get the same value. Not so if a concurrent vac_update_relstats() did an inplace update. Commit 2d2e40e3befd8b9e0d2757554537345b15fa6ea2 fixed the same kind of bug in vac_truncate_clog(). Today's bug could cause the rel-level field and XIDs in the rel's rows to precede the db-level field. A cluster having such values should VACUUM affected tables. Back-patch to v12 (all supported versions). Discussion: https://postgr.es/m/20240423003956.e7.nmisch@google.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/vacuum.c | modified | +16 −12 |
Discussion
- Autovacuum to prevent wraparound tries to consume xid 6 messages · 2016-03-28 → 2024-04-23