diff options
| -rw-r--r-- | Mailman/Deliverer.py | 17 | ||||
| -rwxr-xr-x | cron/archive | 4 | ||||
| -rwxr-xr-x | cron/checkdbs | 4 | ||||
| -rwxr-xr-x | cron/gate_news | 5 | ||||
| -rwxr-xr-x | cron/mailpasswds | 5 | ||||
| -rw-r--r-- | cron/run_queue | 4 | ||||
| -rwxr-xr-x | cron/senddigests | 4 | ||||
| -rwxr-xr-x | cron/upvolumes_monthly | 3 | ||||
| -rwxr-xr-x | cron/upvolumes_yearly | 3 |
9 files changed, 33 insertions, 16 deletions
diff --git a/Mailman/Deliverer.py b/Mailman/Deliverer.py index f01142844..83e35fa15 100644 --- a/Mailman/Deliverer.py +++ b/Mailman/Deliverer.py @@ -170,22 +170,7 @@ class Deliverer: if footer: cmdproc.write(footer) - # TBD: this potentially masks a real bug. We have been getting - # several reports from Linux users that this line is raising the - # following exception: - # - # IOError: (10, 'No child processes') - # - # I don't know how this can happen, I can't reproduce it on Solaris, - # and it doesn't seem to affect anything. So I'm chalking it up to a - # harmless Linux artifact that we can safely ignore. - try: - status = cmdproc.close() - except IOError, (code, msg): - if errcode <> errno.ECHILD: - Utils.reraise() - # otherwise just ignore it - status = 0 + status = cmdproc.close() if status: self.LogMsg('deliverer', 'Non-zero exit status: %d\nCommand: %s', diff --git a/cron/archive b/cron/archive index a348832d6..895167b82 100755 --- a/cron/archive +++ b/cron/archive @@ -30,6 +30,10 @@ from Mailman import MailList from Mailman import mm_cfg from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + def usage(): sys.stderr.write("Usage: %s level\n" % sys.argv[0]) sys.stderr.write("\twhere level is an integer, " diff --git a/cron/checkdbs b/cron/checkdbs index 0b5a91079..03358d14c 100755 --- a/cron/checkdbs +++ b/cron/checkdbs @@ -24,6 +24,10 @@ from Mailman import MailList from Mailman import mm_cfg from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + def main(verbose=0): for name in Utils.list_names(): diff --git a/cron/gate_news b/cron/gate_news index 77f114e39..12f490bfa 100755 --- a/cron/gate_news +++ b/cron/gate_news @@ -29,6 +29,11 @@ from Mailman import mm_cfg from Mailman import Utils from Mailman import flock +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + + WATERMARK_FILE = os.path.join(mm_cfg.DATA_DIR, 'gate_watermarks') LIST_LOCK_FILE = os.path.join(mm_cfg.LOCK_DIR, 'gate_lock.') diff --git a/cron/mailpasswds b/cron/mailpasswds index fede7338e..2f63a6872 100755 --- a/cron/mailpasswds +++ b/cron/mailpasswds @@ -36,6 +36,11 @@ from Mailman import MailList from Mailman import mm_cfg from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + + # Give time for the delivery process-forks to clear every so often, to # avoid saturation of the process table. Set zero or negative for no # pauses. diff --git a/cron/run_queue b/cron/run_queue index aea4ad4d5..86ca66367 100644 --- a/cron/run_queue +++ b/cron/run_queue @@ -24,4 +24,8 @@ import sys import paths from Mailman import OutgoingQueue +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + OutgoingQueue.processQueue() diff --git a/cron/senddigests b/cron/senddigests index dec7e30a7..f66d814cb 100755 --- a/cron/senddigests +++ b/cron/senddigests @@ -25,6 +25,10 @@ import paths from Mailman import MailList from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) + def main(): for name in Utils.list_names(): diff --git a/cron/upvolumes_monthly b/cron/upvolumes_monthly index 58bf56b7e..08a4738a7 100755 --- a/cron/upvolumes_monthly +++ b/cron/upvolumes_monthly @@ -28,6 +28,9 @@ import paths from Mailman import MailList from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) for name in Utils.list_names(): try: diff --git a/cron/upvolumes_yearly b/cron/upvolumes_yearly index 304b2de39..6a0659a2f 100755 --- a/cron/upvolumes_yearly +++ b/cron/upvolumes_yearly @@ -28,6 +28,9 @@ import paths from Mailman import MailList from Mailman import Utils +# Work around known problems with some RedHat cron daemons +import signal +signal.signal(signal.SIGCHLD, signal.SIG_DFL) for name in Utils.list_names(): try: |
