[Mailman-Developers] Mailman 2.0.1 patch

Barry A. Warsaw barry@digicool.com


--K1eGMMCE0X
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit


Folks,

Here's the patch I plan to upload as 2.0 -> 2.0.1 (module Version.py
file updates).  This should fix the bin/withlist buglet and the
qrunner deadlock problem.  I've installed it on mail.python.org and it
seems to be working, so please give it a look.  I will be checking
this into the 2.0.1 branch.

Cheers,
-Barry


--K1eGMMCE0X
Content-Type: text/plain
Content-Description: Mailman 2.0 -> 2.0.1 beta 1
Content-Disposition: inline;
	filename="mm-patch-201.txt"
Content-Transfer-Encoding: 7bit

Index: Mailman/Version.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/Version.py,v
retrieving revision 1.20
diff -u -r1.20 Version.py
--- Mailman/Version.py	2000/11/21 15:57:05	1.20
+++ Mailman/Version.py	2001/01/02 19:53:34
@@ -15,7 +15,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # Mailman version
-VERSION = "2.0"
+VERSION = "2.0.1b1"
 
 # And as a hex number in the manner of PY_VERSION_HEX
 ALPHA = 0xa
@@ -27,10 +27,10 @@
 
 MAJOR_REV = 2
 MINOR_REV = 0
-MICRO_REV = 0
-REL_LEVEL = FINAL
+MICRO_REV = 1
+REL_LEVEL = BETA
 # at most 15 beta releases!
-REL_SERIAL = 0
+REL_SERIAL = 1
 
 HEX_VERSION = ((MAJOR_REV << 24) | (MINOR_REV << 16) | (MICRO_REV << 8) |
                (REL_LEVEL << 4)  | (REL_SERIAL << 0))
Index: admin/www/download.ht
===================================================================
RCS file: /cvsroot/mailman/mailman/admin/www/download.ht,v
retrieving revision 1.5
diff -u -r1.5 download.ht
--- admin/www/download.ht	2000/11/21 15:57:49	1.5
+++ admin/www/download.ht	2001/01/02 19:53:38
@@ -65,9 +65,9 @@
 <h3>Downloading</h3>
 
 <p>Version
-(<!-VERSION--->2.0<!-VERSION--->,
+(<!-VERSION--->2.0.1b1<!-VERSION--->,
 released on
-<!-DATE--->Nov 21 2000<!-DATE--->)
+<!-DATE--->Jan  2 2001<!-DATE--->)
 is the current GNU release.  It is available from the following mirror sites:
 
 <ul>
Index: bin/withlist
===================================================================
RCS file: /cvsroot/mailman/mailman/bin/withlist,v
retrieving revision 1.11
diff -u -r1.11 withlist
--- bin/withlist	2000/11/11 01:54:26	1.11
+++ bin/withlist	2001/01/02 19:53:52
@@ -159,6 +159,8 @@
     except getopt.error, m:
         usage(m)
 
+    lock = 0
+    run = None
     for opt, arg in opts:
         if opt in ('-h', '--help'):
             usage(code=0)
@@ -171,8 +173,6 @@
         usage('No list name supplied.')
 
     listname = string.lower(args.pop(0))
-    lock = 0
-    run = None
 
     # first try to open mailing list
     write('Loading list:', listname, file=sys.stderr, nl=0)
Index: cron/qrunner
===================================================================
RCS file: /cvsroot/mailman/mailman/cron/qrunner,v
retrieving revision 1.18
diff -u -r1.18 qrunner
--- cron/qrunner	2000/09/18 21:28:42	1.18
+++ cron/qrunner	2001/01/02 19:53:52
@@ -78,6 +78,7 @@
 import time
 import marshal
 import mimetools
+from stat import ST_SIZE
 
 import paths
 from Mailman import mm_cfg
@@ -191,6 +192,17 @@
     msgcount = 0
     allkids = {}
     for file in os.listdir(mm_cfg.QUEUE_DIR):
+        # Keep the qrunner lock alive for a while longer
+        lock.refresh()
+        root, ext = os.path.splitext(os.path.join(mm_cfg.QUEUE_DIR, file))
+        if ext == '.db':
+            # 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')
+            # just trigger off the .msg files
+            continue
         # Have we exceeded either resource limit?
         if mm_cfg.QRUNNER_PROCESS_LIFETIME is not None and \
                (time.time() - t0) > mm_cfg.QRUNNER_PROCESS_LIFETIME:
@@ -199,12 +211,6 @@
                msgcount > mm_cfg.QRUNNER_MAX_MESSAGES:
             break
         msgcount = msgcount + 1
-        # Keep the qrunner lock alive for a while longer
-        lock.refresh()
-        root, ext = os.path.splitext(os.path.join(mm_cfg.QUEUE_DIR, file))
-        if ext <> '.msg':
-            # trigger just off the .msg file
-            continue
         msgfp = dbfp = None
         try:
             dbfp = open(root + '.db')

--K1eGMMCE0X--