Re: Parallel worker hangs while handling errors.
Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
To: vignesh C <vignesh21@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Robert Haas <robertmhaas@gmail.com>
Date: 2020-07-28T09:34:51Z
Lists: pgsql-hackers
On Tue, Jul 28, 2020 at 11:05 AM vignesh C <vignesh21@gmail.com> wrote: > > Thanks for your comments Bharath. > > On Mon, Jul 27, 2020 at 10:13 AM Bharath Rupireddy > <bharath.rupireddyforpostgres@gmail.com> wrote: > > 1. Do we need "worker" as a function argument in > > update_parallel_worker_sigmask(BackgroundWorker *worker,.... ? Since > > MyBgworkerEntry is a global variable, can't we have a local variable > > instead? > > Fixed, I have moved the worker check to the caller function. > > > 2. Instead of update_parallel_worker_sigmask() serving only for > > parallel workers, can we make it generic, so that for any bgworker, > > given a signal it unblocks it, although there's no current use case > > for a bg worker unblocking a single signal other than a parallel > > worker doing it for SIGUSR1 for this hang issue. Please note that we > > have BackgroundWorkerBlockSignals() and > > BackgroundWorkerUnblockSignals(). > > Fixed. I have slightly modified the changes to break into > BackgroundWorkerRemoveBlockSignal & BackgroundWorkerAddBlockSignal. > This maintains the consistency similar to > BackgroundWorkerBlockSignals() and BackgroundWorkerUnblockSignals(). > > > If okay, with the BackgroundWorkerUpdateSignalMask() function, please > > note that we might have to add it in bgworker.sgml as well. > > Included the documentation. > > Attached the updated patch for the same. > The v4 patch looks good to me. Hang is not seen, make check and make check-world passes. I moved this to the committer for further review in https://commitfest.postgresql.org/29/2636/. With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Centralize setup of SIGQUIT handling for postmaster child processes.
- 44fc6e259b79 14.0 landed
-
Accept SIGQUIT during error recovery in auxiliary processes.
- 7634bd4f6d38 14.0 landed
-
Avoid lockup of a parallel worker when reporting a long error message.
- be4b0c0077e6 14.0 landed
- 82dd373f2c56 12.5 landed
- 526df0a236df 11.10 landed
- 3738651f5b82 9.5.24 landed
- 2a938c7935cf 10.15 landed
- 2500e51e7bdc 9.6.20 landed
- 17424e79d979 13.0 landed