------------------------------------------------------------
revno: 1750
fixes bug: https://launchpad.net/bugs/1762871
committer: Mark Sapiro <m...@msapiro.net>
branch nick: 2.1
timestamp: Tue 2018-04-10 20:34:48 -0700
message:
  Improve DELIVERY_RETRY_WAIT reimplementation.
modified:
  Mailman/Queue/OutgoingRunner.py
  Mailman/Queue/RetryRunner.py
  NEWS


--
lp:mailman/2.1
https://code.launchpad.net/~mailman-coders/mailman/2.1

Your team Mailman Checkins is subscribed to branch lp:mailman/2.1.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman/2.1/+edit-subscription
=== modified file 'Mailman/Queue/OutgoingRunner.py'
--- Mailman/Queue/OutgoingRunner.py	2017-11-06 11:23:01 +0000
+++ Mailman/Queue/OutgoingRunner.py	2018-04-11 03:34:48 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2017 by the Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 by the Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -122,12 +122,12 @@
                         # disposition?
                         if now > deliver_until:
                             return False
-                        # We're going to retry, but not too soon.
-                        deliver_after = now + mm_cfg.DELIVERY_RETRY_WAIT
-                        msgdata['deliver_after'] = deliver_after
                     else:
                         # Keep trying to delivery this message for a while
                         deliver_until = now + mm_cfg.DELIVERY_RETRY_PERIOD
+                    # Don't retry delivery too soon.
+                    deliver_after = now + mm_cfg.DELIVERY_RETRY_WAIT
+                    msgdata['deliver_after'] = deliver_after
                     msgdata['last_recip_count'] = len(recips)
                     msgdata['deliver_until'] = deliver_until
                     msgdata['recips'] = recips

=== modified file 'Mailman/Queue/RetryRunner.py'
--- Mailman/Queue/RetryRunner.py	2005-08-27 01:40:17 +0000
+++ Mailman/Queue/RetryRunner.py	2018-04-11 03:34:48 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003 by the Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 by the Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -37,7 +37,10 @@
         self.__outq = Switchboard(mm_cfg.OUTQUEUE_DIR)
 
     def _dispose(self, mlist, msg, msgdata):
-        # Move it to the out queue for another retry
+        # Move it to the out queue for another retry if it's time.
+        deliver_after = msgdata.get('deliver_after', 0)
+        if time.time() < deliver_after:
+            return True
         self.__outq.enqueue(msg, msgdata)
         return False
 

=== modified file 'NEWS'
--- NEWS	2018-03-18 16:20:34 +0000
+++ NEWS	2018-04-11 03:34:48 +0000
@@ -18,6 +18,10 @@
 
   Bug fixes and other patches
 
+    - The reimplementation of DELIVERY_RETRY_WAIT in 2.1.26 could cause extra
+      dequeueing and requeueing in the out queue by OutgoingRunner.  This is
+      fixed.  (LP: #1762871)
+
     - A Python 2.7 dependency introduced in the ToDigests handler in Mailman
       2.1.24 has been removed.  (LP: #1755317)
 

_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to