forked from lthn/blockchain
lmdb: fixed erroneous opening of DB created with prev builds with lmdb 0.9.18
This commit is contained in:
parent
3ff1ce583e
commit
f6a3fb5aef
1 changed files with 19 additions and 3 deletions
|
|
@ -49,7 +49,8 @@ namespace tools
|
|||
res = mdb_env_create(&m_penv);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_create");
|
||||
|
||||
res = mdb_env_set_maxdbs(m_penv, 15);
|
||||
MDB_dbi max_dbs = 15;
|
||||
res = mdb_env_set_maxdbs(m_penv, max_dbs);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_set_maxdbs");
|
||||
|
||||
m_path = path_;
|
||||
|
|
@ -59,8 +60,23 @@ namespace tools
|
|||
|
||||
CHECK_AND_ASSERT_MES(tools::create_directories_if_necessary(m_path), false, "create_directories_if_necessary failed: " << m_path);
|
||||
|
||||
res = mdb_env_open(m_penv, m_path.c_str(), MDB_NORDAHEAD /*| MDB_NOSYNC | MDB_WRITEMAP | MDB_MAPASYNC*/, 0644);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_open, m_path=" << m_path);
|
||||
unsigned int lmdb_flags = MDB_NORDAHEAD /*| MDB_NOSYNC | MDB_WRITEMAP | MDB_MAPASYNC*/;
|
||||
mdb_mode_t lmdb_mode = 0644;
|
||||
|
||||
res = mdb_env_open(m_penv, m_path.c_str(), lmdb_flags, lmdb_mode);
|
||||
if (res != MDB_SUCCESS)
|
||||
{
|
||||
// DB created with prev LMDB 0.9.18 cannot be opened due to huge map size set in env
|
||||
// try to remove DB folder completely and re-open
|
||||
boost::filesystem::remove_all(m_path);
|
||||
CHECK_AND_ASSERT_MES(tools::create_directories_if_necessary(m_path), false, "create_directories_if_necessary failed: " << m_path);
|
||||
res = mdb_env_create(&m_penv);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_create");
|
||||
res = mdb_env_set_maxdbs(m_penv, max_dbs);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_set_maxdbs");
|
||||
res = mdb_env_open(m_penv, m_path.c_str(), lmdb_flags, lmdb_mode);
|
||||
CHECK_AND_ASSERT_MESS_LMDB_DB(res, false, "Unable to mdb_env_open, m_path=" << m_path);
|
||||
}
|
||||
|
||||
resize_if_needed();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue