]> granicus.if.org Git - postgresql/commitdiff
Clean up properly error_context_stack in autovacuum worker on exception
authorMichael Paquier <michael@paquier.xyz>
Wed, 23 Oct 2019 01:26:23 +0000 (10:26 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 23 Oct 2019 01:26:23 +0000 (10:26 +0900)
Any callback set would have no meaning in the context of an exception.
As an autovacuum worker exits quickly in this context, this could be
only an issue within EmitErrorReport(), where the elog hook is for
example called.  That's unlikely to going to be a problem, but let's be
clean and consistent with other code paths handling exceptions.  This is
present since 2909419, which introduced autovacuum.

Author: Ashwin Agrawal
Reviewed-by: Tom Lane, Michael Paquier
Discussion: https://postgr.es/m/CALfoeisM+_+dgmAdAOHAu0k-ZpEHHqSSG=GRf3pKJGm8OqWX0w@mail.gmail.com
Backpatch-through: 9.4

src/backend/postmaster/autovacuum.c

index a580a3c4924a509ce86b0fdd883e5957d2b5a1fc..9c37786fbbcead1da5cc0028b45c210a3766f219 100644 (file)
@@ -1530,6 +1530,9 @@ AutoVacWorkerMain(int argc, char *argv[])
         */
        if (sigsetjmp(local_sigjmp_buf, 1) != 0)
        {
+               /* since not using PG_TRY, must reset error stack by hand */
+               error_context_stack = NULL;
+
                /* Prevents interrupts while cleaning up */
                HOLD_INTERRUPTS();