Dima Kuznetsov has posted comments on this change. Change subject: supervdsm: Add zombiereaper to supervdsm ......................................................................
Patch Set 10: (1 comment) http://gerrit.ovirt.org/#/c/28915/10/vdsm/supervdsmServer File vdsm/supervdsmServer: Line 244: # If it didn't fail because process is already dead Line 245: if e.errno != errno.ESRCH: Line 246: raise Line 247: Line 248: raise Timeout() > I thought that our problem is actually here - we raise Timeout without call Actually, terminate() does not wait on child unless child has already returned: def terminate(self): if self.returncode is None: try: os.kill(self.pid, signal.SIGTERM) except OSError, e: if self.wait(timeout=0.1) is None: raise So when doing: pipe.send("Bye") proc.terminate() chances are (unless the scheduling is very favorable) child won't get collected as it waits for the 'Bye'. However, you're correct, that if we get a timeout on the pipe, we'll get a zombie. Line 249: Line 250: try: Line 251: res, err = pipe.recv() Line 252: pipe.send("Bye") -- To view, visit http://gerrit.ovirt.org/28915 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5333caf7a1162c5d783f556bb9204fb74d1ab469 Gerrit-PatchSet: 10 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Dima Kuznetsov <dkuzn...@redhat.com> Gerrit-Reviewer: Dan Kenigsberg <dan...@redhat.com> Gerrit-Reviewer: Dima Kuznetsov <dkuzn...@redhat.com> Gerrit-Reviewer: Yaniv Bronhaim <ybron...@redhat.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: oVirt Jenkins CI Server Gerrit-HasComments: Yes _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches