More Skiplist Stuff!
dpc22 at cam.ac.uk
Fri Jan 11 08:46:59 EST 2008
On Fri, 11 Jan 2008, Bron Gondwana wrote:
> The better alternative to this patch would be to rewrite the fast_rename
> and folder_limit patches to not do untransactioned reads in the middle
> of a transaction, but that involves API changes to a few functions so
> that the transaction will be passed around.
fast_rename doesn't seem to do this: the two mboxlist_count_inferiors()
calls fall between a DB->commit and the following DB->delete and
DB->store. I guess this is why I haven't been having problems. Phew.
folder_limit does have a problem as mboxlist_mycreatemailboxcheck() is
used in the middle of a transaction in mboxlist_renamemailbox(), maybe
other places as well. I think that my approach would be to move the folder
limit test into imapd.c, cmd_create(). I think that's the only place where
end users can create new mailboxes without one of the autocreate patches.
> Either that or just create a global "struct txn *mailboxesdb_txn" or
> something and use that. Pretty icky either way, but at least it won't
> break on berkeley mailboxes_db.
Does the Berkeley backend deadlock if you start an DB->foreach in the
middle of a transaction? That would be a pain. I did like your idea of
reusing the existing transaction/lock if the caller didn't specify one.
David Carter Email: David.Carter at ucs.cam.ac.uk
University Computing Service, Phone: (01223) 334502
New Museums Site, Pembroke Street, Fax: (01223) 334679
Cambridge UK. CB2 3QH.
More information about the Cyrus-devel