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
To get rid of that, I modified the method Manager.loop to act as init, for waiting zombie processes to terminate, if honcho has pid 1.
Nota : I used an old version of psutil (0.6.1) module, because I am working on RHEL6 and I used standard rpm package.
Here is the diff patch :
--- manager.py 2016-09-28 15:56:52.781413761 +0200
+++ ../../../poc_with_barman/build/manager.py 2016-10-03 17:16:33.181063987 +0200
@@ -1,3 +1,6 @@
+import psutil
+import os
+
import datetime
import multiprocessing
import signal
@@ -97,9 +100,34 @@
self.returncode = SIGNALS[signum]['rc']
self.terminate()
+ """
+ If pid=1 honcho act as init processus and must wait for orphean
+ process to avoid zombie.
+ This is usefull when you use honcho as entrypoint in docker image.
+ """
+ def _wait_zombie():
+ for proc in psutil.process_iter():
+ try:
+ if proc.status == psutil.STATUS_ZOMBIE:
+ proc.wait(timeout=KILL_WAIT)
+ except psutil.NoSuchProcess:
+ pass
+
+ """
+ When SIGCHLD is receive call _wait_zombie to get rid of defunct
+ """
+ def _sig_chld(signum, frame):
+ _wait_zombie()
+
signal.signal(signal.SIGTERM, _terminate)
signal.signal(signal.SIGINT, _terminate)
+ """
+ If pid=1 init call back _sig_chld to get rid of defunct
+ """
+ if os.getpid() == 1:
+ signal.signal(signal.SIGCHLD, _sig_chld)
+
self._start()
exit = False
The text was updated successfully, but these errors were encountered:
Hi,
I use honcho as entrypoint in a docker context to manage multi-services docker container.
It works fine, however in some cases of use, it creates defunct processes.
To get rid of that, I modified the method Manager.loop to act as init, for waiting zombie processes to terminate, if honcho has pid 1.
Nota : I used an old version of psutil (0.6.1) module, because I am working on RHEL6 and I used standard rpm package.
Here is the diff patch :
The text was updated successfully, but these errors were encountered: