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@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@domain.com testpwd /usr/local/mailman/bin/newlist -q -e url.domain.com testlist2 list-admin@domain.com testpwd /usr/local/mailman/bin/newlist -q -e url.domain.com testlist3 list-admin@domain.com testpwd /usr/local/mailman/bin/newlist -q -e url.domain.com testlist4 list-admin@domain.com testpwd /usr/local/mailman/bin/newlist -q -e url.domain.com testlist5 list-admin@domain.com testpwd /usr/local/mailman/bin/newlist -q -e url.domain.com testlist6 list-admin@domain.com testpwd
echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist1 echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist2 echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist3 echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist4 echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist5 echo "foo@bar.com" | /usr/local/mailman/bin/add_members -r - testlist6 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist1 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist2 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist3 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist4 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist5 echo "boo@foo.com" | /usr/local/mailman/bin/add_members -r - testlist6
After a short wait the following output is received:
Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com
foo@bar.com receives 6 confirmation emails, as boo@foo.com does. S o far so good.
At this point testlist1-6 each should contain 2 subscribers: foo@bar.com and boo@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@foo.com foo@bar.com foo@bar.com boo@foo.com foo@bar.com foo@bar.com foo@bar.com boo@foo.com foo@bar.com
in which three instances of boo@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@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com mailman11-test# foreach list (1 2 3 4 5 6) ? echo $list ? list_members testlist$list ? end 1 boo@foo.com foo@bar.com 2 boo@foo.com foo@bar.com 3 boo@foo.com foo@bar.com 4 boo@foo.com foo@bar.com 5 foo@bar.com 6 foo@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@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com mailman11-test# foreach list (1 2 3 4 5 6) ? echo $list ? list_members testlist$list ? end 1 boo@foo.com foo@bar.com 2 boo@foo.com foo@bar.com 3 foo@bar.com 4 foo@bar.com 5 foo@bar.com 6 foo@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@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: foo@bar.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com Subscribed: boo@foo.com mailman11-test# foreach list (1 2 3 4 5 6) ? echo $list ? list_members testlist$list ? end 1 foo@bar.com 2 boo@foo.com foo@bar.com 3 foo@bar.com 4 foo@bar.com 5 foo@bar.com 6 foo@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@anl.gov Argonne, IL 60439-4828 IBMMAIL: I1004994
Mailman-Users mailing list Mailman-Users@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.c...
Security Policy: http://wiki.list.org/x/QIA9