Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/db.cpp
Show First 20 Lines • Show All 143 Lines • ▼ Show 20 Lines | for (auto &db : m_databases) { | ||||
assert(count == mapFileUseCount.end() || count->second == 0); | assert(count == mapFileUseCount.end() || count->second == 0); | ||||
BerkeleyDatabase &database = db.second.get(); | BerkeleyDatabase &database = db.second.get(); | ||||
if (database.m_db) { | if (database.m_db) { | ||||
database.m_db->close(0); | database.m_db->close(0); | ||||
database.m_db.reset(); | database.m_db.reset(); | ||||
} | } | ||||
} | } | ||||
FILE *error_file = nullptr; | |||||
dbenv->get_errfile(&error_file); | |||||
int ret = dbenv->close(0); | int ret = dbenv->close(0); | ||||
if (ret != 0) { | if (ret != 0) { | ||||
LogPrintf("BerkeleyEnvironment::Close: Error %d closing database " | LogPrintf("BerkeleyEnvironment::Close: Error %d closing database " | ||||
"environment: %s\n", | "environment: %s\n", | ||||
ret, DbEnv::strerror(ret)); | ret, DbEnv::strerror(ret)); | ||||
} | } | ||||
if (!fMockDb) { | if (!fMockDb) { | ||||
DbEnv(u_int32_t(0)).remove(strPath.c_str(), 0); | DbEnv(u_int32_t(0)).remove(strPath.c_str(), 0); | ||||
} | } | ||||
if (error_file) { | |||||
fclose(error_file); | |||||
} | |||||
UnlockDirectory(strPath, ".walletlock"); | |||||
} | } | ||||
void BerkeleyEnvironment::Reset() { | void BerkeleyEnvironment::Reset() { | ||||
dbenv.reset(new DbEnv(DB_CXX_NO_EXCEPTIONS)); | dbenv.reset(new DbEnv(DB_CXX_NO_EXCEPTIONS)); | ||||
fDbEnvInit = false; | fDbEnvInit = false; | ||||
fMockDb = false; | fMockDb = false; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 800 Lines • Show Last 20 Lines |