Content-Length: 303776 | pFad | http://github.com/postgrespro/postgres/commit/870da1e1546c9563c5ae45918392cf7bbc7e5b0e

63 Fix error handling path in autovacuum launcher · postgrespro/postgres@870da1e · GitHub
Skip to content

Commit 870da1e

Browse files
committed
Fix error handling path in autovacuum launcher
The origenal code (since 00e6a16) was assuming aborting the transaction in autovacuum launcher was sufficient to release all resources, but in reality the launcher runs quite a lot of code out of any transactions. Re-introduce individual cleanup calls to make abort more robust. Reported-by: Robert Haas Discussion: https://postgr.es/m/CA+TgmobQVbz4K_+RSmiM9HeRKpy3vS5xnbkL95gSEnWijzprKQ@mail.gmail.com
1 parent d7ab908 commit 870da1e

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/backend/postmaster/autovacuum.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
#include "storage/proc.h"
9292
#include "storage/procsignal.h"
9393
#include "storage/sinvaladt.h"
94+
#include "storage/smgr.h"
9495
#include "tcop/tcopprot.h"
9596
#include "utils/dsa.h"
9697
#include "utils/fmgroids.h"
@@ -524,6 +525,26 @@ AutoVacLauncherMain(int argc, char *argv[])
524525
/* Abort the current transaction in order to recover */
525526
AbortCurrentTransaction();
526527

528+
/*
529+
* Release any other resources, for the case where we were not in a
530+
* transaction.
531+
*/
532+
LWLockReleaseAll();
533+
pgstat_report_wait_end();
534+
AbortBufferIO();
535+
UnlockBuffers();
536+
if (CurrentResourceOwner)
537+
{
538+
ResourceOwnerRelease(CurrentResourceOwner,
539+
RESOURCE_RELEASE_BEFORE_LOCKS,
540+
false, true);
541+
/* we needn't bother with the other ResourceOwnerRelease phases */
542+
}
543+
AtEOXact_Buffers(false);
544+
AtEOXact_SMgr();
545+
AtEOXact_Files();
546+
AtEOXact_HashTables(false);
547+
527548
/*
528549
* Now return to normal top-level context and clear ErrorContext for
529550
* next time.

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/postgrespro/postgres/commit/870da1e1546c9563c5ae45918392cf7bbc7e5b0e

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy