diff options
| 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 |
| commit | 0a3d27bfe0fb229253aa95feccd0360530b7edd8 (patch) | |
| tree | d84a079639191e7824f2e812a831c1e008e28822 /src/backend | |
| parent | 1213cb475391640508d2495b2b560329897d152c (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.c | 3 |
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. |
