mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Fix parallel operations that prevent oldest xmin from advancing.
While determining xid horizons, we skip over backends that are running Vacuum. We also ignore Create Index Concurrently, or Reindex Concurrently for the purposes of computing Xmin for Vacuum. But we were not setting the flags corresponding to these operations when they are performed in parallel which was preventing Xid horizon from advancing. The optimization related to skipping Create Index Concurrently, or Reindex Concurrently operations was implemented in PG-14 but the fix is the same for the Parallel Vacuum as well so back-patched till PG-13. Author: Masahiko Sawada Reviewed-by: Amit Kapila Backpatch-through: 13 Discussion: https://postgr.es/m/CAD21AoCLQqgM1sXh9BrDFq0uzd3RBFKi=Vfo6cjjKODm0Onr5w@mail.gmail.com
This commit is contained in:
@ -4159,6 +4159,12 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc)
|
||||
LVRelState vacrel;
|
||||
ErrorContextCallback errcallback;
|
||||
|
||||
/*
|
||||
* A parallel vacuum worker must have only PROC_IN_VACUUM flag since we
|
||||
* don't support parallel vacuum for autovacuum as of now.
|
||||
*/
|
||||
Assert(MyProc->statusFlags == PROC_IN_VACUUM);
|
||||
|
||||
lvshared = (LVShared *) shm_toc_lookup(toc, PARALLEL_VACUUM_KEY_SHARED,
|
||||
false);
|
||||
elevel = lvshared->elevel;
|
||||
|
Reference in New Issue
Block a user