Forum Stats

  • 3,827,142 Users
  • 2,260,744 Discussions
  • 7,897,182 Comments

Discussions

Correct way to handle db PANIC errors

Hello.

I am trying to handle the case where there is an issue with my db or log files. it would not be great but if there was an error I could delete them and accept the data loss.

for example errors like

BDB1513 Checkpoint LSN record [2][2040412] not found

BDB0061 PANIC: BDB0073 DB_NOTFOUND: No matching key/data pair found

How can i catch these errors before they terminate the program.

whats the best way to open the db and check for errors.

verify did not work - it said all was ok!

Db db_verify(NULL, 0);

db_verify.verify(_db, "db/env/", "db", NULL,  DB_ORDERCHKONLY );

how can i properly test for correct db/logs without it PANICking and falling over?

Thanks

Answers

  • User_DAIKJ
    User_DAIKJ Member Posts: 5 Green Ribbon

    For what it is worth, I had a panic situation recently that was caused by db->get failing with DBD0073 DB_NOTFOUND. The panic happened if I ignored the failure and kept trying to look up more keys (which some failed and some did not). But this was also related to an underlying problem with b-tree databases being memory mapped.

    Anyway, you mentioned the DBD0073 error and were asking for a way to handle the panic. If you know the key is in the database, and you get the DBD0073 from db->get, then that is probably your indicator that something has gone wrong, and you should close the db at that point.

    Maybe a little helpful?