From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Fix test races between syscache-update-pruned.spec and autovacuu |
Date: | 2025-04-09 14:25:15 |
Message-ID: | E1u2WMd-003SAX-3C@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix test races between syscache-update-pruned.spec and autovacuum.
This spec fails ~3% of my Valgrind runs, and the spec has failed on Valgrind
buildfarm member skink at a similar rate. Two problems contributed to that:
- A competing buffer pin triggered VACUUM's lazy_scan_noprune() path, causing
"tuples missed: 1 dead from 1 pages not removed due to cleanup lock
contention". FREEZE fixes that.
- The spec ran lazy VACUUM immediately after VACUUM FULL. The spec implicitly
assumed lazy VACUUM prunes the one tuple that VACUUM FULL made dead. First
wait for old snapshots, making that assumption reliable.
This also adds two forms of defense in depth:
- Wait for snapshots using shared catalog pruning rules (VISHORIZON_SHARED).
This avoids the removable cutoff moving backward when an XID-bearing
autoanalyze process runs in another database. That may never happen in this
test, but it's cheap insurance.
- Use lazy VACUUM option DISABLE_PAGE_SKIPPING. Commit
c2dc1a79767a0f947e1145f82eb65dfe4360d25f did this for a related requirement
in other tests, but I suspect FREEZE is necessary and sufficient in all
these tests.
Back-patch to v17, where the test first appeared.
Reported-by: Andres Freund <andres(at)anarazel(dot)de>
Discussion: https://postgr.es/m/sv3taq4e6ea4qckimien3nxp3sz4b6cw6sfcy4nhwl52zpur4g@h6i6tohxmizu
Backpatch-through: 17
Branch
------
REL_17_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/42bb4fb7281ec4881c8a9bac14e1ea7206d0e63d
Modified Files
--------------
.../expected/syscache-update-pruned.out | 6 ++---
.../expected/syscache-update-pruned_1.out | 6 ++---
.../modules/injection_points/regress_injection.c | 17 +++++++++----
.../specs/syscache-update-pruned.spec | 28 ++++++++++++++++++----
4 files changed, 41 insertions(+), 16 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2025-04-09 16:28:40 | pgsql: Fix performance issue in deadlock-parallel isolation test. |
Previous Message | Heikki Linnakangas | 2025-04-09 10:46:57 | Re: pgsql: Make cancel request keys longer |