Bron Gondwana wrote: > On Fri, Jul 18, 2008 at 11:57:28AM +0200, Per olof Ljungmark wrote: >> and >> skiplist: unlock while not locked > > This is almost certainly a bug. I added this along with a bunch > of other skiplist changes to find places where the database > interface wasn't being used correctly, because it means bugs of > some sort. > > There's another skiplist bug I've been trying to track down > (multiple deletes on the same connection failing), but haven't > been able to reproduce it yet. > > Unfortunately, the cyrus database interface sort of sucks from > a consistency perspective, it's dangerous to call any function > that needs database access if you have a database transaction > open, because the code doesn't know about the transaction and > blindy goes ahead and starts a new transaction, which doesn't > work. > > The code now throws an error immediately rather than causing > corruption. Much better :) Sucks or not, it's been working very reliable for us for 5 years now! I recompiled Cyrus without BDB support, changed line 1034 in ./lib/imapoptions to take skiplist as default and now finally statuscache.db is using skiplist. Also, I applied "Skiplist Readlocktracking" and "Skiplist Safeunlock" and now there are no errors of any kind in the logs. Thanks! ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html