What happened to my db/ ?

Nick Fisher cyrus at nickdafish.com
Wed Jan 14 11:21:39 EST 2004


>>>> Hello All,
>>>>   I recently moved my cyrus-imapd install from one machine to
>>>> annother.
>>>> The move went *quite* well, I had both servers stoped and rsynced the
>>>> live server's data (/var/imap, /var/spool/imap) over to the new
>>>> server.
>>>>
>>>> Everything was fine untill I started playing with SSL, at that point I
>>>> started having problems getting cyrus running after a restart.
>>>>
>>>> Here is what I was seeing in my logs:
>>>> """
>>>> Jan  8 17:27:11 [tls_prune] DBERROR db4: operation not permitted
>>>> during
>>>> recovery.
>>>> Jan  8 17:27:11 [tls_prune] DBERROR: opening
>>>> /var/imap/tls_sessions.db:
>>>> Invalid argument
>>>> Jan  8 17:27:11 [tls_prune] DBERROR: opening
>>>> /var/imap/tls_sessions.db:
>>>> cyrusdb error
>>>> """
>>>>
>>>> Somewhere I found a post from someone having the same problem. They
>>>> said
>>>> that they could get cyrus working again by removing all the files in
>>>> /var/imap/db. So I did that. Now I can start cyrus and read my mail
>>>> *PHEW*. However I now have a new raft of errors showing up in syslog.
>>>> Everytime I start cyrus I get this:
>>>> """
>>>> Jan  8 18:01:42 [master] setrlimit: Unable to set file descriptors
>>>> limit
>>>> to -1: Operation not permitted
>>>> Jan  8 18:01:42 [master] retrying with 1024 (current max)
>>>> Jan  8 18:01:42 [master] process started
>>>> Jan  8 18:01:42 [ctl_cyrusdb] recovering cyrus databases
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR db4: DB_ENV->log_flush: LSN past
>>>> current end-of-log
>>>>                 - Last output repeated twice -
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR db4: Recovery function for LSN 1
>>>> 182
>>>> failed
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR: dbenv->open '/var/imap/db'
>>>> failed:
>>>> Invalid argument
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR: init /var/imap/db: cyrusdb
>>>> error
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR db4: environment not yet opened
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR: opening /var/imap/mailboxes.db:
>>>> Invalid argument
>>>> Jan  8 18:01:42 [ctl_cyrusdb] DBERROR: opening /var/imap/mailboxes.db:
>>>> cyrusdb error
>>>> Jan  8 18:01:42 [master] process 4105 exited, status 75_
>>>> Jan  8 18:01:42 [master] ready for work
>>>> Jan  8 18:01:42 [tls_prune] tls_prune: purged 0 out of 0 entries
>>>> Jan  8 18:01:42 [ctl_cyrusdb] checkpointing cyrus databases
>>>> Jan  8 18:01:42 [ctl_deliver] duplicate_prune: pruning back 3 days
>>>> Jan  8 18:01:42 [ctl_deliver] duplicate_prune: purged 2 out of 742
>>>> entries
>>>> Jan  8 18:01:42 [ctl_cyrusdb] done checkpointing cyrus databases
>>>> """
>>>>
>>>> I don't *think* it's a permissions problem...
>>>> """
>>>> usr # ls -la /var/imap/db/.
>>>> total 12952
>>>> drwxr-xr-x    2 cyrus    mail         4096 Jan  8 21:15 .
>>>> drwxr-xr-x   14 cyrus    mail         4096 Jan  9 16:45 ..
>>>> -rw-r--r--    1 cyrus    mail            0 Sep 23 13:31 .keep
>>>> -rw-------    1 cyrus    mail         8192 Jan  8 21:15 __db.001
>>>> -rw-------    1 cyrus    mail       270336 Jan  8 21:15 __db.002
>>>> -rw-------    1 cyrus    mail        98304 Jan  8 21:15 __db.003
>>>> -rw-------    1 cyrus    mail     18063360 Jan  8 21:15 __db.004
>>>> -rw-------    1 cyrus    mail        32768 Jan  8 21:15 __db.005
>>>> -rw-------    1 cyrus    mail       286763 Jan  9 17:10 log.0000000001
>>>> """
>>>>
>>>> I'm using EXT3 so I don't think it's anything to do with the "chattr
>>>> +S"
>>>> stuff.
>>>>
>>>> I tryed recompiling cyrus.... it didn't help.
>>>>
>>>> The idea of cyrus dying fills me with dread. Someone please help me
>>>> out
>>>> here.... what is going on and how do I stop it? If someone can give me
>>>> a
>>>> bit of a shove in the right direction it would be MOST helpfull.....
>>>> links... generall information.... even mild abuse, all gratefully
>>>> accepted.
>>>
>>> Please search the list archives.
>> I have... I used parts of the error message as keywords and didn't come
>> up
>> with much that appeared to be relevent. If you can suggest better
>> keywords
>> I will happily try again.
>>
>>> IIRC there have been two problems which
>>> could create messages like yours. One problem is with NPTL on newer
>>> RedHat
>>> Linux and AMD and some other CPU's.
>> I found some posts on this and did some reading. At first I got a bit
>> excited becuase I have just changed from a PIII to a Athalon. Now I
>> don't
>> think that this is the problem. I compiled from source (I use Gentoo) so
>> '--enable-posixmutexes' shouldn't be set. I also just tryed recompiling
>> db4 with '--disable-posixmutexes'. AFAIK I didn't have to recompile
>> cyrus
>> after (please correct me if I'm wrong here). After a restart of cyrus
>> I'm
>> still getting the same messages.
>>
>>> The other problem is IIRC something
>>> with the latest greatest DB4 release. Search for 'DB_ENV' and
>>> 'dbenv->open', I'm quite sure you'll find out what's wrong.
>> I can't find the second issue you reffer to.  When I search on those two
>> terms alone I get a snow of documentation and when I add keywords like
>> 'bug' or 'cyrus' I only find the NTPL problems.
>>
>> It occured to me after I posted this that I didn't give any versions of
>> what I'm using....
>> The system is running Gentoo and I'm using the packages marked as stable
>> in the portage tree.
>> DB4 = 4.0.14
>> Cyrus = 2.1.15
>> CPU = AMD T-bird 900
>> Kernel = gs-sources 2.4.23_pre8-gss-r2
>> If I've missed anything please let me know.
>>
>> The only other idea I've got from my hunting around is that it might be
>> worth trying to manually rebuild/fix the db/ manually. That gave me
>> nearly
>> the same error:
>> db_recover: DB_ENV->log_flush: LSN past current end-of-log
>> db_recover: DB_ENV->log_flush: LSN past current end-of-log
>> db_recover: Recovery function for LSN 1 182 failed
>> db_recover: DB_ENV->open: Invalid argument
>>
>> Many thanks for the help but I'm afraid I need more :(
>
> Well, since you told us you moved your db files from another server, I
> suspect you have a database mismatch. Cyrus-imapd can be compiled with
> many different database backends and even the ondisk format of db3 and db4
> are not compatible. I'm quite sure that your database files (or one of
> them) is not in the format your Cyrus-imapd expects.
>
Not a bad idea.... I have both db3 and db4 installed. To test I figured
that I would try and run the db3 version of stat. I stoped cyrus, went
into the db dir, ran the recoverand this was the result:

db_stat: Program version 3.2.9 doesn't match environment version 4.0.14
db_stat: DBENV->open: Invalid argument

Then I tryed the db4 version and got this:

4.0.14  Environment version.
120897  Magic number.
0       Panic value.
0       References.
82      Locks granted without waiting.
0       Locks granted after waiting.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mpool Region: 2.
264KB   Size (270336 bytes).
-1      Segment ID.
8840    Locks granted without waiting.
0       Locks granted after waiting.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Log Region: 3.
96KB    Size (98304 bytes).
-1      Segment ID.
1177    Locks granted without waiting.
1       Locks granted after waiting.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Lock Region: 4.
17MB 232KB      Size (18063360 bytes).
-1      Segment ID.
7342    Locks granted without waiting.
0       Locks granted after waiting.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Txn Region: 5.
32KB    Size (32768 bytes).
-1      Segment ID.
480     Locks granted without waiting.
0       Locks granted after waiting.

I also found this post:
http://www.netsys.com/openldap-software/2003/07/msg00477.html
That warns against exactally what I did.... copy the db files from one
place to annother. It's not the only post I've found warning about the
importability of bdbs. I'm wondering how I can get myself out of all this.
Though I'm at a loss to explain the details. I've never worked that much
with the bdb stuff before. It all does *seem* to point to to the bdb
enviroment.... and I have no idea what to do about it.

Can I totaly regenerate the database, somehow tell remove all the files
and tell cyrus to re-initalise the db? What would happen to the mail and
it's attributes (seen/unseen/etc)?

Thanks again for all the help so far.....

  Nick




More information about the Info-cyrus mailing list