You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It seems that under certain circumstances, if a worker process exits abnormally, ProcessPool will spawn two new processes to replace it. This ignores the maximum worker limit the ProcessPool is configured with, so eventually enough processes will be spawned so as to consume all available system resources.
I don't completely understand why this happens, but I know that the "second" replacement process is spawned by the startAWorker call attached to the stopAWorker Deferred in _cb_doWork. This may be because the Shutdown call issued by stopAWorker fails with ProcessTerminated. This results in the Deferred succeeding instead of failing, allowing the startAWorker callback to run. Additionally, when the process exits, it gets restarted by the logic in _addProcess. Just a guess, though.
(In general I think all this code should (and could be) be a lot simpler.)
The text was updated successfully, but these errors were encountered:
It seems that under certain circumstances, if a worker process exits abnormally, ProcessPool will spawn two new processes to replace it. This ignores the maximum worker limit the ProcessPool is configured with, so eventually enough processes will be spawned so as to consume all available system resources.
I don't completely understand why this happens, but I know that the "second" replacement process is spawned by the
startAWorker
call attached to thestopAWorker
Deferred in_cb_doWork
. This may be because theShutdown
call issued bystopAWorker
fails withProcessTerminated
. This results in the Deferred succeeding instead of failing, allowing thestartAWorker
callback to run. Additionally, when the process exits, it gets restarted by the logic in_addProcess
. Just a guess, though.(In general I think all this code should (and could be) be a lot simpler.)
The text was updated successfully, but these errors were encountered: