Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core
Commits:
8e5da156 by Mark Sapiro at 2021-05-11T23:51:39+00:00
Fix master watcher to restart child exits.
- - - - -
a0159d93 by Abhilash Raj at 2021-05-11T23:51:39+00:00
Merge branch 'runner' into 'master'
Fix master watcher to restart child exits.
See merge request mailman/mailman!858
- - - - -
3 changed files:
- setup.py
- src/mailman/bin/master.py
- src/mailman/docs/NEWS.rst
Changes:
=====================================
setup.py
=====================================
@@ -115,7 +115,7 @@ case second 'm'. Any other spelling is incorrect.""",
'atpublic',
'authheaders>=0.9.2',
'authres>=1.0.1',
- 'click>=7.0.0',
+ 'click>=7.0.0,<8.0',
'dnspython>=1.14.0',
'falcon>=3.0.0',
'flufl.bounce',
=====================================
src/mailman/bin/master.py
=====================================
@@ -420,11 +420,14 @@ class Loop:
# Find out why the subprocess exited by getting the signal
# received or exit status.
if os.WIFSIGNALED(status):
- why = os.WTERMSIG(status)
+ why = os.WTERMSIG(status) # pragma: nocover
+ sig_or_exit = 'SIGNAL ' # pragma: nocover
elif os.WIFEXITED(status):
why = os.WEXITSTATUS(status)
- else:
+ sig_or_exit = 'EXIT '
+ else: # pragma: nocover
why = None
+ sig_or_exit = 'UNKNOWN'
# We'll restart the subprocess if it exited with a SIGUSR1 or
# because of a failure (i.e. no exit signal), and the no-restart
# command line switch was not given. This lets us better handle
@@ -432,7 +435,8 @@ class Loop:
rname, slice_number, count, restarts = self._kids.pop(pid)
config_name = 'runner.' + rname
restart = False
- if why == signal.SIGUSR1 and self._restartable:
+ if ((why == signal.SIGUSR1 or sig_or_exit != 'SIGNAL ') and
+ self._restartable): # pragma: nocover
restart = True
# Have we hit the maximum number of restarts?
restarts += 1
@@ -442,8 +446,8 @@ class Loop:
# Are we permanently non-restartable?
log.debug("""\
Master detected subprocess exit
-(pid: {0:d}, why: {1}, class: {2}, slice: {3:d}/{4:d}) {5}""".format(
- pid, why, rname, slice_number + 1, count,
+(pid: {0:d}, why: {1}{2}, class: {3}, slice: {4:d}/{5:d}) {6}""".format(
+ pid, sig_or_exit, why, rname, slice_number + 1, count,
('[restarting]' if restart else '')))
# See if we've reached the maximum number of allowable restarts.
if restarts > max_restarts:
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -60,6 +60,7 @@ Bugs
(Closes #858)
* Improve performance of the bounce runner by decreasing the number of
database queries executed.
+* The master watcher will now restart a process that exits. (See #887)
Command line
------------
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/3d8ac31202d466843c0b5a3cf794d7322a822f3c...a0159d938fbf5231e6f85d190cce15b55c3cd98f
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/3d8ac31202d466843c0b5a3cf794d7322a822f3c...a0159d938fbf5231e6f85d190cce15b55c3cd98f
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]