pgsql: Check for too many postmaster children before spawning a bgworke
От | Tom Lane |
---|---|
Тема | pgsql: Check for too many postmaster children before spawning a bgworke |
Дата | |
Msg-id | E1iHW2m-0004bH-7S@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Check for too many postmaster children before spawning a bgworker. The postmaster's code path for spawning a bgworker neglected to check whether we already have the max number of live child processes. That's a bit hard to hit, since it would necessarily be a transient condition; but if we do, AssignPostmasterChildSlot() fails causing a postmaster crash, as seen in a report from Bhargav Kamineni. To fix, invoke canAcceptConnections() in the bgworker code path, as we do in the other code paths that spawn children. Since we don't want the same pmState tests in this case, add a child-process-type parameter to canAcceptConnections() so that it can know what to do. Back-patch to 9.5. In principle the same hazard exists in 9.4, but the code is enough different that this patch wouldn't quite fix it there. Given the tiny usage of bgworkers in that branch it doesn't seem worth creating a variant patch for it. Discussion: https://postgr.es/m/18733.1570382257@sss.pgh.pa.us Branch ------ REL9_6_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/c69e982a60fb5b67fb946300209460f35c19daf2 Modified Files -------------- src/backend/postmaster/postmaster.c | 49 ++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 14 deletions(-)
В списке pgsql-committers по дате отправления: