Re: Missed check for too-many-children in bgworker spawning
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-10-07T20:03:48Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Sun, Oct 6, 2019 at 1:17 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> The attached proposed patch fixes this by making bgworker spawning >> include a canAcceptConnections() test. > I think it used to work this way -- not sure if it was ever committed > this way, but it at least did during development -- and we ripped it > out because somebody (Magnus?) pointed out that if you got close to > the connection limit, you could see parallel queries start failing, > and that would suck. Falling back to non-parallel seems more OK in > that situation than actually failing. I'm not following your point? Whatever you might think the appropriate response is, I'm pretty sure "elog(FATAL) out of the postmaster" is not it. Moreover, we have to --- and already do, I trust --- deal with other resource-exhaustion errors in exactly the same code path, notably fork(2) failure which we simply can't predict or prevent. Doesn't the parallel query logic already deal sanely with failure to obtain as many workers as it wanted? regards, tom lane
Commits
-
Check for too many postmaster children before spawning a bgworker.
- 8c2910ce5ed7 9.5.20 landed
- c69e982a60fb 9.6.16 landed
- 7e8d0eb63fbb 12.1 landed
- 3887e9455f81 13.0 landed
- 1b5c2ddcdefc 10.11 landed
- 021065aac676 11.6 landed
-
Report an ERROR if a parallel worker fails to start properly.
- 2badb5afb89c 11.0 cited