[Mailman-Developers] [Mailman-Users] Subscribers suddenly"disappear"
Massimo Lanfranconi
Max.Lanfranconi at Sun.COM
Wed Aug 6 03:01:56 CEST 2008
Mark,
I am more than willing to try any workaround as this bug is currently a
showstopper for my project.
I am not very versed in mailman internals, so I need some guidance here.
Do you recommend I try getting rid of the __timestamp test and give it
a try ?
If that is you suggestion, may I ask what was the original purpose of
that test ?
Thanks again for your help in solving this.
Regards,
Max
Mark Sapiro wrote:
> Max Lanfranconi wrote:
>
>
>> I tried the "sleep" approach as well. But then I thought that it was not
>> viable.
>> I am setting a relatively high number of mailing list that will receive
>> asynchronous "subscribe" requests via web and/or shell API.
>>
>> It would be simply not possible to prevent bug this from happening as
>> the chance of two "subscribe" being processsed almost simultaneously are
>> not that small...
>>
>> I also vote for some kind of timing/lock issue.
>>
>
>
> Based on my running of the test script (see
> <http://mail.python.org/pipermail/mailman-users/2008-August/062885.html>,
> with
>
> LIST_LOCK_DEBUGGING = True
>
> 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
> __timestamp
>
> 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 list.
> 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()
> does
>
> 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
> list.
>
> Thank you very much Max for providing a script to reproduce the problem.
>
> 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.
>
> Other thoughts?
>
>
--
--
<http://jcp.org> * Max Lanfranconi *
JCP Program Management Office
Marketing Manager
Phone +1 408 404 6893
Mobile +1 408 505 1020
Email max at jcp.org
More information about the Mailman-Developers
mailing list