summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorÁlvaro Herrera <alvherre@kurilemu.de>2025-11-04 20:31:43 +0100
committerÁlvaro Herrera <alvherre@kurilemu.de>2025-11-04 20:31:43 +0100
commit0a3d27bfe0fb229253aa95feccd0360530b7edd8 (patch)
treed84a079639191e7824f2e812a831c1e008e28822 /src/backend
parent1213cb475391640508d2495b2b560329897d152c (diff)
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
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/postmaster/autovacuum.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 59ec45a4e96..ed19c74bb19 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -2558,7 +2558,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.