Please note that the BDB system is no longer used in EMAN2.1, and may not even be supported in EMAN2.2. We STRONGLY encourage all users to upgrade to at least 2.1x
Please make sure you have read this first: Warning about BDB use
MOST issues that happen with BDB are related to the cache (generally in /tmp/eman2db-<username>) getting unsynchronized with the actual data due to users doing something 'illegal' with database files, or computers crashing in bad ways. Here is a sequence of things to try with this type of failure:
- e2bdb.py -c
- This should always be the first thing you try.
- It must be run when no other EMAN2 jobs are running on the machine.
- If it seems to freeze for a long period of time, you can stop it, and if you are SURE that there are no other EMAN2 commands running, you can run it in 'force' mode with e2bdb.py -cF
- Usually it will finish running in just a few seconds, but if something really unusual has happened, it could possibly take 30 sec - 1 min to complete.
if it still exists, cd /tmp/eman2db-<username> then run db_recover, cd ~, then run e2bdb.py -c again
If that does not correct the problem, you may consider emailing email@example.com before taking the following action
You can try completely removing the cache directory (rm -rf /tmp/eman2db-<username>)
- The problem with doing this is if there is unwritten data in the cache, you could corrupt one of your databases, potentially irrecoverably
- Then again, if you're already at this point, it may have already happened :^(
- If THAT doesn't fix the problem, you may be seeing messages like this :
- DBPageNotFoundError: (-30985, 'DB_PAGE_NOTFOUND: Requested page not found')
- That type of error indicates that database corruption HAS occurred. If you can identify which database has been corrupted, and you feel somewhat competent with computers, you can adapt the following sequence to try to recover the data:
e2bdb.py -c mv EMAN2DB/project.bdb . db_dump -r project.bdb | db_load EMAN2DB/project.bdb
- That may not recover everything, but it should give you an uncorrupted database with whatever it could recover.