postgres.git / summary / log / commit / refs

commit    c21e6e2fd48cdcfe7d01eed243d576c722ef8de5
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Wed Nov 15 09:34:35 2023 +0000
First released in: 17.0

    Clear CurrentResourceOwner earlier in CommitTransaction.
    
    Alexander reported a crash with repeated create + drop database, after
    the ResourceOwner rewrite (commit b8bff07daa). That was fixed by the
    previous commit, but it nevertheless seems like a good idea clear
    CurrentResourceOwner earlier, because you're not supposed to use it
    for anything after we start releasing it.
    
    Reviewed-by: Alexander Lakhin
    Discussion: https://www.postgresql.org/message-id/11b70743-c5f3-3910-8e5b-dd6c115ff829%40gmail.com


src/backend/access/transam/xact.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 74ce5f9491c..8fad8ffa1eb 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -2309,6 +2309,7 @@ CommitTransaction(void) CallXactCallbacks(is_parallel_worker ? XACT_EVENT_PARALLEL_COMMIT : XACT_EVENT_COMMIT); + CurrentResourceOwner = NULL; ResourceOwnerRelease(TopTransactionResourceOwner, RESOURCE_RELEASE_BEFORE_LOCKS, true, true); @@ -2374,7 +2375,6 @@ CommitTransaction(void) AtEOXact_LogicalRepWorkers(true); pgstat_report_xact_timestamp(0); - CurrentResourceOwner = NULL; ResourceOwnerDelete(TopTransactionResourceOwner); s->curTransactionOwner = NULL; CurTransactionResourceOwner = NULL; [parent: 325f54033e59]