diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/bin/master.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mailman/bin/master.py b/src/mailman/bin/master.py index 0b273d332..a23fb8e0b 100644 --- a/src/mailman/bin/master.py +++ b/src/mailman/bin/master.py @@ -188,6 +188,9 @@ class PIDWatcher: def __init__(self): self._pids = {} + def __contains__(self, pid): + return pid in self._pids.keys() + def __iter__(self): # Safely iterate over all the keys in the dictionary. Because # asynchronous signals are involved, the dictionary's size could @@ -402,6 +405,10 @@ class Loop: except InterruptedError: # pragma: nocover # If the system call got interrupted, just restart it. continue + if pid not in self._kids: + # Not a runner subprocess, maybe a plugin started one + # ignore it + continue # Find out why the subprocess exited by getting the signal # received or exit status. if os.WIFSIGNALED(status): |
