Hi, Several months ago, I had such a problem in mailboxes.db in skiplist format. In your mail below, you wrote a bit more aggressive recovery mechanism. And also wrote that such a recovery algorithm could make a infinite-loop problem when RECSIZE is 0. If RECSIZE is 0, isn't it possible to go back to the file position of committed record ? How about investigating from the first record to the last to find a corrupted record ? Isn't it possible also?
------ won > -----Original Message----- > From: Rob Mueller [mailto:[EMAIL PROTECTED]] > Sent: Thursday, December 12, 2002 11:02 AM > To: Alessandro Oliveira; [EMAIL PROTECTED] > Cc: Rob Siemborski > Subject: Re: DBERROR: skiplist recovery errors > > > Looks like you've got corrupted skiplist files. Delete the seen state > databases with the problem and it will automatically rebuild them. > > It's scarier when you see this on the mailboxes DB. > > Which reminds me. The skiplist recovery code barfs if it > comes across this > error and gives up. However, if you truncate the length of > the file to just > smaller than the problem location, then it happily recovers, > even though > there's an incomplete record. I really don't think recovery > should ever just > 'give up'. Maybe make a backup of the bad DB, remove the > offending records, > warn the user and continue would be much nicer. > > Also there's a bit of code that looks like this: > for (;;) { > p += RECSIZE(p); > if (p >= q) break; > if (TYPE(p) == COMMIT) break; > } > > I had a corrupted DB once where RESIZE(p) == 0. This just went into an > infinite loop. Also not a good idea when trying to recover a database. > > Rob > > ----- Original Message ----- > From: "Alessandro Oliveira" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Wednesday, December 11, 2002 11:46 PM > Subject: DBERROR: skiplist recovery errors > > > > Hi, > > > > I'm getting the following errors in my logs: > > > > .... > > Dec 9 09:12:35 intra03 imapd[30212]: DBERROR: skiplist > recovery: 0958 > > should be ADD or DELETE > > Dec 9 09:12:35 intra03 imapd[30212]: DBERROR: opening > > /var/lib/imap/user/n/natacha.seen: cyrusdb error > > Dec 9 09:12:35 intra03 imapd[30212]: Could not open seen state for > > natacha (System I/O error) > > .... > > Dec 11 10:40:56 intra03 imapd[15239]: DBERROR: skiplist > recovery: 02C4 > > should be ADD or DELETE > > Dec 11 10:40:56 intra03 imapd[15239]: DBERROR: opening > > /var/lib/imap/user/m/mariana.seen: cyrusdb error > > Dec 11 10:40:56 intra03 imapd[15239]: Could not open seen state for > > mariana (System I/O error) > > .... > > > > I can't figure it out whats going on here, do you have any clues ? > > > > Thanks in Advance, > > > > Alessandro > > > > > > > > > > > > > > > >