[Mailman-Developers] Database version updates drop nomail settings

Barry A. Warsaw barry@zope.com
Sat, 9 Mar 2002 12:30:58 -0500


>>>>> "LN" == Les Niles <les@2pi.org> writes:

    LN> There's a small bug in 2.1alpha4 in updating a list's database
    LN> to the DATA_FILE_VERSION, causing "nomail" settings to not be
    LN> propagated forward:

    LN> MailList.CheckVersion() reloads the database, taking care to
    LN> make sure that the reload doesn't trigger a recursive call to
    LN> CheckVersion().  But if the list wasn't locked, CheckVersion()
    LN> then calls Lock(), and Lock() calls Load() again, this time
    LN> generating a recursive call to CheckVersion().  This recursion
    LN> is only one deep because now the list is locked, but even that
    LN> is too much for versions.CanonicalizeUserOptions() since it
    LN> clears the old-style "nomail" flag after setting the delivery
    LN> status in the new database.

I need more help with this one because I cannot reproduce the
problem.  I've tried taking a MM2.0.8 list, with some members delivery
disabled, and done upgrades to cvs.  I've tried loading the list in
its locked and unlocked state.  In every case I see the disabled flag
propagate to the updated list.  Of course, the member management page
shows the reason for disabled as [?] which is correct.

I have a tentative patch to versions.py that at least stops
CanonicalizeUserOptions() from running more than once.  But I can't
judge the correctness of Les's patch unless I have a reproducible
bug.  So if you have some explicit steps to trigger the bug, please
send them on, otherwise, I can't do much about this.

If it's a real bug, I'm sure it will come up during beta testing, but
that might be too late (i.e. it might bite badly for people who are,
er, more enthusiastic about upgrading. ;).

-Barry