From: Heikki Linnakangas Date: Wed, 15 Nov 2023 09:34:35 +0000 (+0100) Subject: Clear CurrentResourceOwner earlier in CommitTransaction. X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=c21e6e2fd48cdcfe7d01eed243d576c722ef8de5;p=users%2Frhaas%2Fpostgres.git 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 --- diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 74ce5f9491..8fad8ffa1e 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;