I've got my bayes database files in a tmpfs filesystem and I wanted to
back them up every hour via cron so that I would have something to start
from in the event of a system crash, so I wrote a script to lock and copy
them and I decided to throw in a db_verify just to be sure I had a good
copy. What I discovered is that about 50% of the time db_verify fails
on bayes_toks as in

  db_verify bayes_toks

  db_verify: Page 2289: hash page has bad prev_pgno
  db_verify: Page 2110: hash page has bad prev_pgno
  db_verify: Page 2377: hash page has bad prev_pgno
  db_verify: DB->verify: bayes_toks: DB_VERIFY_BAD: Database verification failed

It doesn't seem to make any difference to ongoing operations
and I don't know if I should just ignore the problem and remove the
db_verify from my backup script. Any comments? I'd be happy to help to
diagnose this problem, if it really is a problem, but I'd need some
advice on where to look in the code.

One reason it only happens some of the time, BTW, is that my script
also included "sa-learn --force-expiry" and I've discovered that the
act of rebuilding the database always seemed to clean up the problem.
However, I have a really busy server and by the time the expiry was
finished the journal had often grown to the maximum size and while
the expiry was running there would be another process waiting for
a lock so that the journal could be rolled into the database, and
if that happened there would be a 50/50 chance that corruption
would occur.

I've now removed the "force-expiry" and sometimes bayes_toks can go
through several db_verify'ed backup cycles before I start getting
messages like those shown above - sometimes it happens right away.

Sorry to be so long-winded. One final question. I had included the
"sa-learn --force-expiry" in the script because the opportunistic
expiry sometimes takes 3 to 4 minutes on my server and if it runs at
an unopportune time when the system load is exceptionally high it
might even take more than 10 minutes at which point a journalizing
process might come along and delete the lock file and really corrupt
the database. Or so I figured. I've now removed the forced expiry
to try to simplify the operation, but I'd be interested in
knowing if forcing an expiry every hour instead of waiting
for the automatic expiry is a good idea or not.

System details are
  Sun Solaris 8 (sparc), SA 2.63, Mimedefang 2.39, perl 5.8.2, db 4.2.52

- rick


-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Spamassassin-talk mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/spamassassin-talk

Reply via email to