DBERROR: skiplist recovery errors

??? weon at digitalwave.co.kr
Thu Dec 12 02:15:44 EST 2002


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:robm at fastmail.fm]
> Sent: Thursday, December 12, 2002 11:02 AM
> To: Alessandro Oliveira; info-cyrus at lists.andrew.cmu.edu
> 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" <alessandro.o at nunoferreira.com.br>
> To: <info-cyrus at lists.andrew.cmu.edu>
> 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
> >
> >
> >
> >
> >
> >
> >
> 
> 





More information about the Info-cyrus mailing list