postgres.git / summary / log / commit / refs

commit    3b5007347b5db0fa34cb54773be89e22f5d68b61
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 b4650dc1eb3..93beed26fc6 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -2530,7 +2530,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: cfcdae551321]