postgres.git / summary / log / commit / refs
commit bcfbd3f747d7f4403d8b53d1c471557c391d613f
Author: Álvaro Herrera <alvherre@kurilemu.de>
Date: Tue Nov 04 19:31:43 2025 +0000
First released in: 13.23, 14.20, 15.15, 16.11, 17.7, 18.1
Fix snapshot handling bug in recent BRIN fix
Commit a95e3d84c0e0 added ActiveSnapshot push+pop when processing
work-items (BRIN autosummarization), but forgot to handle the case of
a transaction failing during the run, which drops the snapshot untimely.
Fix by making the pop conditional on an element being actually there.
Author: Álvaro Herrera <alvherre@kurilemu.de>
Backpatch-through: 13
Discussion: https://postgr.es/m/202511041648.nofajnuddmwk@alvherre.pgsql
src/backend/postmaster/autovacuum.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 107cd82e2e1..4577259722b 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -2617,7 +2617,8 @@ deleted:
PushActiveSnapshot(GetTransactionSnapshot());
perform_work_item(workitem);
- PopActiveSnapshot();
+ if (ActiveSnapshotSet()) /* transaction could have aborted */
+ PopActiveSnapshot();
/*
* Check for config changes before acquiring lock for further jobs.
[parent: eeabf8bfdccc]