[Mailman-Developers] 2.0.8 - qrunner on solaris
Rob Ellis
rob@web.ca
Thu, 7 Mar 2002 12:12:14 -0500
I'm not sure if this is appropriate here, so apologies in advance
if it isn't...
We're using Mailman 2.0.8 on a sun ultra with solaris 8,
and we were running into two problems with qrunner...
The first was a race condition where this code in qrunner
- # If the .db file has no corresponding .msg file, we might as well
- # remove the .db file, since there's little we can do about it.
- if not os.path.exists(root+'.msg'):
- syslog('qrunner', 'Unlinking orphaned .db file: %s.db' % root)
- os.unlink(root+'.db')
was unlinking .db files before their corresponding .msg files were
created. We just removed those lines and it seems to be ok --
no orphaned .db files and no more orphaned .msg files.
The second problem was that qrunner was crashing on some kinds
of bounce messages (?), causing messages to pile up in the queue
occasionally. It was generating errors like this:
> Traceback (most recent call last):
> File "/usr/local/mailman/cron/qrunner", line 277, in ?
> kids = main(lock)
> File "/usr/local/mailman/cron/qrunner", line 247, in main
> keepqueued = dispose_message(mlist, msg, msgdata)
> File "/usr/local/mailman/cron/qrunner", line 121, in dispose_message
> if BouncerAPI.ScanMessages(mlist, mimemsg):
> File "/usr/local/mailman/Mailman/Bouncers/BouncerAPI.py", line 59, in ScanMessages
> addrs = func(msg)
> File "/usr/local/mailman/Mailman/Bouncers/DSN.py", line 46, in process
> if string.lower(msg.gettype()) <> 'multipart/report' or \
> File "/usr/local/lib/python2.1/string.py", line 51, in lower
> return s.lower()
> AttributeError : 'None' object has no attribute 'lower'
The patch below seems to fix the problem (?)... we're now
seeing some errors like this:
bounce loop detected from: mailer-daemon@web.net
but at least qrunner keeps running and the queue is getting cleared.
- Rob
--
Rob Ellis <rob@web.ca>
System Administrator, Web Networks
*
--- Mailman/Bouncers/DSN.py 14 Nov 2001 15:57:09 -0000 1.1.1.2
+++ Mailman/Bouncers/DSN.py 7 Mar 2002 16:29:02 -0000 1.2
@@ -43,7 +43,7 @@
def process(msg):
- ctype = msg.gettype()
+ ctype = msg.gettype() or ''
param = msg.getparam('report-type') or ''
if string.lower(ctype) <> 'multipart/report' or \
string.lower(param) <> 'delivery-status':