summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mailman/Deliverer.py17
-rwxr-xr-xcron/archive4
-rwxr-xr-xcron/checkdbs4
-rwxr-xr-xcron/gate_news5
-rwxr-xr-xcron/mailpasswds5
-rw-r--r--cron/run_queue4
-rwxr-xr-xcron/senddigests4
-rwxr-xr-xcron/upvolumes_monthly3
-rwxr-xr-xcron/upvolumes_yearly3
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: