[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