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-0004bD-5u@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
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/021065aac676c96b703b9c7a02da763469a183c1

Modified Files
--------------
src/backend/postmaster/postmaster.c | 46 ++++++++++++++++++++++++++-----------
1 file changed, 33 insertions(+), 13 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Simplify PGAC_STRUCT_TIMEZONE Autoconf macro
Следующее
От: Bruce Momjian
Дата:
Сообщение: pgsql: doc: move mention of log_min_error_statement in a better spot