While running our app (which seemed to be running slow on this last job), I ended up receiving an rc:87 on a commit, which my app couldn't recover from. I have verified that I have free disk space, free RAM.
Upon restart, after the db was opened, the first process started and quickly reported an MDB_PAGE_NOTFOUND on a call to mdb_cursor_get
For your info, here the db info as reported during the restart: Env Stats:{ms_branch_pages=0, ms_psize=4096, ms_depth=1, ms_leaf_pages=1, ms_overflow_pages=0, ms_entries=23} Info:{me_last_pgno=678442, me_mapaddr=0, me_mapsize=4194304000, me_last_txnid=112652, me_maxreaders=300, me_numreaders=0} Data Db Stats:{ms_branch_pages=315, ms_psize=4096, ms_depth=4, ms_leaf_pages=71375, ms_overflow_pages=25, ms_entries=7768832} Primitive Db Stats:{ms_branch_pages=990, ms_psize=4096, ms_depth=4, ms_leaf_pages=183396, ms_overflow_pages=17263, ms_entries=3537190} Incidence Db Stats:{ms_branch_pages=516, ms_psize=4096, ms_depth=4, ms_leaf_pages=86349, ms_overflow_pages=0, ms_entries=11534223} % Full:66.254105%
1- What could have caused this error 87, which seems to be related to some arguments issue?
2- More importantly, what can be done to avoid getting a db in a state like this which seems to me to be corrupted (and that's also what the doc says)?
I am keeping the db should it be required for forensic analysis.
Thanks Alain
On 2014-01-29 16:58, Alain wrote:
While running our app (which seemed to be running slow on this last job), I ended up receiving an rc:87 on a commit, which my app couldn't recover from. I have verified that I have free disk space, free RAM.
Error numbers are OS-dependent. What's errno 87? E.g. what does this say: perl -le '$! = 87; print $!'
Which LMDB version and operating system do you use?
Upon restart, after the db was opened, the first process started and quickly reported an MDB_PAGE_NOTFOUND on a call to mdb_cursor_get
If the latest commit was bad, maybe previous one is OK. We need to give mdb_copy an option to make a backup using the oldest instead of youngest commit. Then you'll lose just the last commit instead of everything.
openldap-technical@openldap.org