cvt_cyrusdb and berkeley log files

Ken Murchison ken at oceana.com
Tue Mar 2 12:30:16 EST 2004


Andreas wrote:

> While playing with the cvt_cyrusdb utility (and Simon's excellent
> cvt_cyrusdb_all script) I came across this problem when converting
> a database *from* berkeley *to* skiplist.
> 
> Let's say I have /var/lib/imap/mailboxes.db in berkeley format. I also
> have berkeley transaction log files in /var/lib/imap/log.* and
> /var/lib/imap/db/log.*.
> 
> I then shut down the cyrus daemon and convert mailboxes.db to skiplist.
> The conversion succeeds:
> # file mailboxes.db
> mailboxes.db: Cyrus skiplist DB
> 
> Now I restart cyrus. And get this in the logs:
> ctl_cyrusdb[30046]: DBERROR db4: /var/lib/imap/mailboxes.db: unexpected file type or format
> ctl_cyrusdb[30046]: DBERROR db4: Recovery function for LSN 1 4471396 failed
> ctl_cyrusdb[30046]: DBERROR db4: PANIC: Invalid argument
> ctl_cyrusdb[30046]: DBERROR: critical database situation
> 
> It seems ctl_cyrusdb is attempting to read mailboxes.db as a DB file and not skiplist.
> I *suppose* this happens because it is trying to recover the database using the log file
> which was left there and contains BDB transactions. AFAIK, however, this type of recovery
> procedure is called "catastrophic" by the berkeley folks: a normal recovery procedure
> would only touch log files which contain uncommited transactions. Looking at the code, I
> see that it is not performing catastrophic recovery (it's just using the DB_RECOVER flag
> when opening the environment), so I'm at a loss here.
> 
> The only way to remedy this situation is to remove the relevant log files.
> Anybody care to comment?

That's what I have done in the past.  The problem is that the log files 
still have references to the now nonexistent mailboxes.db.  What needs 
to happen is that the mailbox in question needs to be removed from the 
BDB environment so we don't try to recover it.  Its possible that doing 
a checkpoint (ctl_cyrusdb -c) before the conversion may solve the 
problem, but I have never tried it.

-- 
Kenneth Murchison     Oceana Matrix Ltd.
Software Engineer     21 Princeton Place
716-662-8973 x26      Orchard Park, NY 14127
--PGP Public Key--    http://www.oceana.com/~ken/ksm.pgp
---
Home Page: http://asg.web.cmu.edu/cyrus
Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list