Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune()
От | Peter Geoghegan |
---|---|
Тема | Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune() |
Дата | |
Msg-id | CAH2-WzkkEYtq-YevYD9we6kEJ-yDBPw6=F7r1uvqKrWqXy0FFg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune() (Noah Misch <noah@leadboat.com>) |
Список | pgsql-bugs |
On Mon, Jan 8, 2024 at 1:21 PM Noah Misch <noah@leadboat.com> wrote: > > I see no reason why it > > matters if OldestXmin goes backwards across two VACUUM operations, so > > I haven't tried to avoid that. > > That may be fully okay, or we may want to clamp OldestXmin to be no older than > relfrozenxid. I don't feel great about the system moving relfrozenxid > backward unless it observed an older XID, and observing an older XID would be > a corruption signal. I don't have a specific way non-monotonic relfrozenxid > breaks things, though. We're already prepared for this -- relfrozenxid simply cannot go backwards, regardless of what vacuumlazy.c thinks. That is, vac_update_relstats() won't accept a new relfrozenxid that is < its existing value (unless it's a value "from the future", which is a way of recovering after historical pg_upgrade-related corruption bugs). If memory serves it doesn't take much effort to exercise the relevant code within vac_update_relstats(). I'm pretty sure that the regression tests will fail if you run them after removing its defensive no-older-relfrozenxid test (though I haven't checked recently). -- Peter Geoghegan
В списке pgsql-bugs по дате отправления: