[Mailman-Developers] [Mailman-Users] Subscribers suddenly"disappear"
barry at list.org
Wed Aug 6 03:13:07 CEST 2008
-----BEGIN PGP SIGNED MESSAGE-----
On Aug 5, 2008, at 7:34 PM, Mark Sapiro wrote:
> I think I see the problem. It is related to qrunner list caching and
> the fact the there is insufficient precision in the list instance's
> The scenario is the following
> 1) add_member saves the list with the first member.
> 2) VirginRunner gets there first, instantiates and caches the list.
> It then locks the list, processes the welcome and saves and unlocks
> the list.
> 3) add_member gets the lock, adds the second member and saves the
> 4) Virgin runner gets the second welcome. The list is cached, so it
> uses the cached instance. It then locks the list which ultimately
> calls MailList.__load() to refresh the list data, but __load()
> mtime = os.path.getmtime(dbfile)
> if mtime <= self.__timestamp:
> # File is not newer
> return None, None
> The problem is os.path.getmtime() returns a time in seconds so if
> we are still in the same second as step 2), we don't refresh the
> Thank you very much Max for providing a script to reproduce the
> I'm not sure of the best solution. I'm leaning towards dropping the
> __timestamp test or perhaps replacing it with a file size test, but
> that too may be unreliable.
I wonder if the list cache is still worth it? I've run into trouble
with it in the recent past and I suspect that whatever benefits we got
from it in ancient times, may not be so relevant today. My first
inclination would be to ditch the cache, but that may not completely
solve this issue (ah, for the backing of a real database!).
Ultimately the timestamp check probably has to go. If we try to load
the list, we should just load it and not try to be so fancy to avoid
reading from disk. Yes, it means more I/O but reliability is more
important, IMO. I'm not convinced a size check is worth it.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)
-----END PGP SIGNATURE-----
More information about the Mailman-Developers