FAQ
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

Search Discussions

  • Max Lanfranconi at Aug 5, 2008 at 6:52 am
    Hi,
    I would much appreciate if someone could take the time to replicate the
    following mailman behaviour.
    Please let me know if you find the same issues.



    Thanks in advance,

    Regards,
    Max

    Max Lanfranconi 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
  • Barry Finkel at Aug 5, 2008 at 3:18 pm

    Max Lanfranconi 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
  • Mark Sapiro at Aug 5, 2008 at 3:52 pm

    Barry Finkel wrote:
    Max Lanfranconi 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:
    <snip>
    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: <snip>
    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?

    There appears to be some kind of race issue. There are two other
    reports of strangeness like this at
    <http://mail.python.org/pipermail/mailman-developers/2008-May/020190.html>
    and
    <http://mail.python.org/pipermail/mailman-users/2008-May/061720.html>.

    In both of those cases it seemed there may have been a locking failure
    of some kind, but I couldn't see how. See the above threads for more
    detail.

    However, locking (at least list locking at the Mailman level) doesn't
    seem to be involved in this case because each command process will
    have saved and unlocked the list and terminated before the next
    command process begins.

    I intend to test the script on two other platforms (Cygwin/Python
    2.5.1, and Centos 5/Python 2.4.3) later today.

    Given that this script is (or should be) running the command processes
    serially with no contention between commands for the config.pck files,
    It would seem like an OS issue, but the script failure occurs on two
    different OS platforms already, so I'm at a loss for what the issue
    may be.

    --
    Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
    San Francisco Bay Area, California better use your sense - B. Dylan
  • Mark Sapiro at Aug 5, 2008 at 5:12 pm

    Mark Sapiro wrote:
    However, locking (at least list locking at the Mailman level) doesn't
    seem to be involved in this case because each command process will
    have saved and unlocked the list and terminated before the next
    command process begins.

    While is correct as far as it goes, I forgot about VirginRunner and
    OutgoingRunner sending the welcome messages. So there are other
    mailman processes running in parallel accessing the same config.pck
    files so list locking is involved.

    I intend to test the script on two other platforms (Cygwin/Python
    2.5.1, and Centos 5/Python 2.4.3) later today.

    I have run a somewhat revised script on both platforms with the
    following results:

    Cygwin 1.5.19(0.150/4/2) on Windows XP with Python 2.5.1
    No loss of members whether or not mailman is running concurrently
    (3 of 3 tries with mailman running).

    CentOS 5 (Linux 2.6.18-8.1.14.el5) with Python 2.4.3
    No loss of members if script is run with mailman stopped.
    Lost members if script is run with mailman running on 2 out of 3
    tries.

    So far, all the failures reported have been with Python 2.4.x and
    Python 2.5.1 didn't fail, but this could also be Cygwin and
    independent of Python. It would help if others could try this with
    Python 2.5.x and report.

    Here's the script I used. It is similar to the original, but I
    parameterized several things and I added '-a' to the rmlist command.

    #!/bin/sh

    prefix=/usr/local/mailman
    usera=mark at msapiro.net
    userb=msapiro at msapiro.net
    owner=mark at msapiro.net
    edomain=msapiro.net
    listname=testlist

    $prefix/bin/rmlist -a ${listname}1
    $prefix/bin/rmlist -a ${listname}2
    $prefix/bin/rmlist -a ${listname}3
    $prefix/bin/rmlist -a ${listname}4
    $prefix/bin/rmlist -a ${listname}5
    $prefix/bin/rmlist -a ${listname}6
    $prefix/bin/newlist -q -e $edomain ${listname}1 $owner testpwd
    $prefix/bin/newlist -q -e $edomain ${listname}2 $owner testpwd
    $prefix/bin/newlist -q -e $edomain ${listname}3 $owner testpwd
    $prefix/bin/newlist -q -e $edomain ${listname}4 $owner testpwd
    $prefix/bin/newlist -q -e $edomain ${listname}5 $owner testpwd
    $prefix/bin/newlist -q -e $edomain ${listname}6 $owner testpwd


    echo "$usera" | $prefix/bin/add_members -r - ${listname}1
    echo "$usera" | $prefix/bin/add_members -r - ${listname}2
    echo "$usera" | $prefix/bin/add_members -r - ${listname}3
    echo "$usera" | $prefix/bin/add_members -r - ${listname}4
    echo "$usera" | $prefix/bin/add_members -r - ${listname}5
    echo "$usera" | $prefix/bin/add_members -r - ${listname}6
    echo "$userb" | $prefix/bin/add_members -r - ${listname}1
    echo "$userb" | $prefix/bin/add_members -r - ${listname}2
    echo "$userb" | $prefix/bin/add_members -r - ${listname}3
    echo "$userb" | $prefix/bin/add_members -r - ${listname}4
    echo "$userb" | $prefix/bin/add_members -r - ${listname}5
    echo "$userb" | $prefix/bin/add_members -r - ${listname}6

    sleep 5

    $prefix/bin/list_members ${listname}1
    $prefix/bin/list_members ${listname}2
    $prefix/bin/list_members ${listname}3
    $prefix/bin/list_members ${listname}4
    $prefix/bin/list_members ${listname}5
    $prefix/bin/list_members ${listname}6

    --
    Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
    San Francisco Bay Area, California better use your sense - B. Dylan
  • Mark Sapiro at Aug 6, 2008 at 12:12 am
    This thread moved to Mailman-Developers. See
    <http://mail.python.org/pipermail/mailman-developers/2008-August/020330.html>
    for the analysis.

    --
    Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
    San Francisco Bay Area, California better use your sense - B. Dylan

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupmailman-users @
categoriespython
postedAug 4, '08 at 8:24a
activeAug 6, '08 at 12:12a
posts6
users3
websitelist.org

People

Translate

site design / logo © 2022 Grokbase