------------------------------------------------------------
revno: 1316
committer: Mark Sapiro <[email protected]>
branch nick: 2.1
timestamp: Thu 2011-09-29 16:39:46 -0700
message:
A problem with the logic avoiding unnecessarily reloading a current list
object from the config.pck arises if the list is updated by another
process within the same second that it was last read/written. That can
cause the reading of latest version of the list to be skipped. This has
been fixed. Bug #862675.
modified:
Mailman/MailList.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/MailList.py'
--- Mailman/MailList.py 2011-02-07 19:59:23 +0000
+++ Mailman/MailList.py 2011-09-29 23:39:46 +0000
@@ -599,8 +599,16 @@
# file doesn't exist, we'll get an EnvironmentError with errno set
# to ENOENT (EnvironmentError is the base class of IOError and
# OSError).
+ # We test strictly less than here because the resolution is whole
+ # seconds and we have seen cases of the file being updated by
+ # another process in the same second.
+ # Even this is not sufficient in shared file system environments
+ # if there is time skew between servers. In those cases, the test
+ # could be
+ # if mtime + MAX_SKEW < self.__timestamp:
+ # or the "if ...: return" just deleted.
mtime = os.path.getmtime(dbfile)
- if mtime <= self.__timestamp:
+ if mtime < self.__timestamp:
# File is not newer
return None, None
fp = open(dbfile)
@@ -618,8 +626,9 @@
return None, e
finally:
fp.close()
- # Update timestamp
- self.__timestamp = mtime
+ # Update the timestamp. We use current time here rather than mtime
+ # so the test above might succeed the next time.
+ self.__timestamp = int(time.time())
return dict, None
def Load(self, check_version=True):
=== modified file 'NEWS'
--- NEWS 2011-09-16 00:21:55 +0000
+++ NEWS 2011-09-29 23:39:46 +0000
@@ -66,6 +66,12 @@
Bug Fixes and other patches
+ - A problem with the logic avoiding unnecessarily reloading a current list
+ object from the config.pck arises if the list is updated by another
+ process within the same second that it was last read/written. That can
+ cause the reading of latest version of the list to be skipped. This has
+ been fixed. Bug #862675.
+
- Fixed bin/export.py to accept case insensitive password schemes.
Bug #833134.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org