DB_RUNRECOVERY: Fatal error, run database recovery
584814Jan 25 2008 — edited Feb 4 2008We are experiencing this error very frequently when attempting to create a database using the open() function. The same occurs during an open call on an environment that has been previously created.
DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery
Parameters being set:
parameterResult = m_berkeleyDBEnv->set_cachesize(0, 50 * 1024 * 1024, 1); // 50MB
parameterResult = m_berkeleyDBEnv->set_tx_max( 500 ); // 500 Transactions
parameterResult = m_berkeleyDBEnv->set_lk_max_objects( 99000 ); // 99000 Lock Objects
parameterResult = m_berkeleyDBEnv->set_lk_max_lockers( 99000 ); // 99000 Lockers
parameterResult = m_berkeleyDBEnv->set_lk_max_locks( 99000 ); // 99000 Locks
Environment Flags being set upon open:
m_defaultEnvironmentFlags =
DB_CREATE | // If the environment does not
// exist, create it.
DB_INIT_LOCK | // Initialize the locking subsystem
DB_INIT_LOG | // Initialize the logging subsystem
DB_INIT_MPOOL | // Initialize the cache
DB_INIT_TXN | // Initialize transactions
DB_THREAD; // Ensure Environment is
// free-threaded
We have attempted to add the DB_RECOVER method to the flags list but we see the same rate of failure. Why might we be seeing this error so frequently during create?
Our application opens and manages 1 or more databases, each stored and managed separately. It is a single threaded application and no inter-environment access occurs.
Upon calling XmlManager::open(), a couple of __db.00x files are created, there is a ~2 second pause then the files are removed and the assertion is thrown.