[Mailman-Developers] [Mailman-Users] Subscribers suddenly "disappear"
Max Lanfranconi
Max.Lanfranconi at Sun.COM
Tue Aug 5 17:39:31 CEST 2008
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.
Max
Barry Finkel wrote:
> Max Lanfranconi <Max.Lanfranconi at Sun.COM> wrote:
>
>
>> Mailman 2.1.11
>> Python 2.4.4
>> OS Solaris 2.11
>>
>>
>> Hi,
>>
>> I have been able to reproduce this bug consistently by running the
>> replicate_bug script:
>>
>>
>> replicate _bug is the following:
>>
>> #!/bin/sh
>> /usr/local/mailman/bin/rmlist testlist1
>> /usr/local/mailman/bin/rmlist testlist2
>> /usr/local/mailman/bin/rmlist testlist3
>> /usr/local/mailman/bin/rmlist testlist4
>> /usr/local/mailman/bin/rmlist testlist5
>> /usr/local/mailman/bin/rmlist testlist6
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist1
>> list-admin at domain.com testpwd
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist2
>> list-admin at domain.com testpwd
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist3
>> list-admin at domain.com testpwd
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist4
>> list-admin at domain.com testpwd
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist5
>> list-admin at domain.com testpwd
>> /usr/local/mailman/bin/newlist -q -e url.domain.com testlist6
>> list-admin at domain.com testpwd
>>
>>
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist1
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist2
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist3
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist4
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist5
>> echo "foo at bar.com" | /usr/local/mailman/bin/add_members -r - testlist6
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist1
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist2
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist3
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist4
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist5
>> echo "boo at foo.com" | /usr/local/mailman/bin/add_members -r - testlist6
>>
>> After a short wait the following output is received:
>>
>> Subscribed: foo at bar.com
>> Subscribed: foo at bar.com
>> Subscribed: foo at bar.com
>> Subscribed: foo at bar.com
>> Subscribed: foo at bar.com
>> Subscribed: foo at bar.com
>> Subscribed: boo at foo.com
>> Subscribed: boo at foo.com
>> Subscribed: boo at foo.com
>> Subscribed: boo at foo.com
>> Subscribed: boo at foo.com
>> Subscribed: boo at foo.com
>>
>> foo at bar.com receives 6 confirmation emails, as boo at foo.com does. S
>> o far so
>> good.
>>
>> At this point testlist1-6 each should contain 2 subscribers: foo at bar.com
>> and boo at foo.com
>>
>> BUT
>>
>> /usr/local/mailman/bin/list_members testlist1
>> /usr/local/mailman/bin/list_members testlist2
>> /usr/local/mailman/bin/list_members testlist3
>> /usr/local/mailman/bin/list_members testlist4
>> /usr/local/mailman/bin/list_members testlist5
>> /usr/local/mailman/bin/list_members testlist6
>>
>> invariably produce some random combination in which one or more of the
>> subscribers are missing:
>> for example:
>> boo at foo.com
>> foo at bar.com
>> foo at bar.com
>> boo at foo.com
>> foo at bar.com
>> foo at bar.com
>> foo at bar.com
>> boo at foo.com
>> foo at bar.com
>>
>> in which three instances of boo at foo.com are missing...
>>
>> No Errors in any Mailman log.
>>
>>
>> Thanks in advance for your help. Please let me know if you need additional
>> details.
>> Regards,
>> Max
>>
>
> I ran the script (after some minor modifications) on
>
> Ubuntu Dapper
> Mailman 2.1.11 (self-built package)
> Python 2.4.3 (#2, Oct 6 2006, 07:49:22)
>
> and I get similar results:
>
> Script started on Tue 05 Aug 2008 09:45:31 AM CDT
> # set prompt="mailman11-test# "
> mailman11-test# ./replicate_bug.exec
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist1
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist2
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist3
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist4
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist5
> Remove the components of a mailing list with impunity - beware!
>
> This removes (almost) all traces of a mailing list. By default, the lists
> archives are not removed, which is very handy for retiring old lists.
>
> Usage:
> rmlist [-a] [-h] listname
>
> Where:
> --archives
> -a
> Remove the list's archives too, or if the list has already been
> deleted, remove any residual archives.
>
> --help
> -h
> Print this help message and exit.
>
>
> No such list (or list already deleted): testlist6
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> mailman11-test# foreach list (1 2 3 4 5 6)
> ? echo $list
> ? list_members testlist$list
> ? end
> 1
> boo at foo.com
> foo at bar.com
> 2
> boo at foo.com
> foo at bar.com
> 3
> boo at foo.com
> foo at bar.com
> 4
> boo at foo.com
> foo at bar.com
> 5
> foo at bar.com
> 6
> foo at bar.com
> mailman11-test# =======================================================
> mailman11-test# ./replicate_bug.exec
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> mailman11-test# foreach list (1 2 3 4 5 6)
> ? echo $list
> ? list_members testlist$list
> ? end
> 1
> boo at foo.com
> foo at bar.com
> 2
> boo at foo.com
> foo at bar.com
> 3
> foo at bar.com
> 4
> foo at bar.com
> 5
> foo at bar.com
> 6
> foo at bar.com
> mailman11-test# =======================================================
> mailman11-test# ./replicate_bug.exec
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Not removing archives. Reinvoke with -a to remove them.
> Removing list info
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: foo at bar.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> Subscribed: boo at foo.com
> mailman11-test# foreach list (1 2 3 4 5 6)
> ? echo $list
> ? list_members testlist$list
> ? end
> 1
> foo at bar.com
> 2
> boo at foo.com
> foo at bar.com
> 3
> foo at bar.com
> 4
> foo at bar.com
> 5
> foo at bar.com
> 6
> foo at bar.com
> mailman11-test# exit
>
> Script done on Tue 05 Aug 2008 09:50:48 AM CDT
>
> I then added
>
> sleep 5
>
> after each "add_members" line, and the output looked fine.
> I changed the sleep interval from 5 down to 1 in successive
> runs, and each output looks fine; each list has the proper two
> subscribers. Is there a timing issue here?
> ----------------------------------------------------------------------
> Barry S. Finkel
> Computing and Information Systems Division
> Argonne National Laboratory Phone: +1 (630) 252-7277
> 9700 South Cass Avenue Facsimile:+1 (630) 252-4601
> Building 222, Room D209 Internet: BSFinkel at anl.gov
> Argonne, IL 60439-4828 IBMMAIL: I1004994
>
> ------------------------------------------------------
> Mailman-Users mailing list
> Mailman-Users at python.org
> http://mail.python.org/mailman/listinfo/mailman-users
> Mailman FAQ: http://wiki.list.org/x/AgA3
> Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/
> Unsubscribe: http://mail.python.org/mailman/options/mailman-users/max.lanfranconi%40sun.com
>
> Security Policy: http://wiki.list.org/x/QIA9
>
More information about the Mailman-Developers
mailing list