On Mon, Jul 27, 2026 at 6:00 PM Bharath Rupireddy <[email protected]> wrote: > > Hi, > > While working on the parallel heap vacuum feature I noticed a stale > comment in parallel_vacuum_main(). It says a parallel vacuum worker > must have only PROC_IN_VACUUM set because parallel index vacuum is not > supported for autovacuum. That is no longer true after commit > 1ff3180ca01, which enabled autovacuum to use parallel vacuum workers.
Good catch! > IMHO, the assertion itself is still worth keeping. It ensures the > parallel worker carries PROC_IN_VACUUM, so that other backends ignore > its xmin when computing the removable-tuple horizon, which is what we > want for a worker that is part of a vacuum. The leader, whether it is > a backend running a VACUUM command or an autovacuum worker, sets > PROC_IN_VACUUM when it starts vacuuming the table, and the worker > inherits it when it imports the leader's snapshot (see > ProcArrayInstallRestoredXmin). PROC_IS_AUTOVACUUM never reaches the > worker, because parallel workers are launched as regular background > workers rather than autovacuum workers, so the flag is never set on > them, and importing the leader's snapshot doesn't carry it over > either. So the worker ends up with exactly PROC_IN_VACUUM even under > parallel autovacuum, and the assertion holds. > > The attached patch rewords the comment to explain this. Since PG19 is > still in beta, I would like to backpatch this to 19 where 1ff3180ca01 > was introduced. > > Thoughts? I agree with your analysis. And the proposed comment looks clear to me. Will push the patch barring any objections. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
