diff options
Diffstat (limited to 'src/db.cpp')
-rw-r--r-- | src/db.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/db.cpp b/src/db.cpp index 94629f3cad..35d6cca890 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -62,8 +62,7 @@ bool CDBEnv::Open(const boost::filesystem::path& path) if (fDbEnvInit) return true; - if (fShutdown) - return false; + boost::this_thread::interruption_point(); strPath = path.string(); filesystem::path pathLogDir = path / "database"; @@ -75,11 +74,10 @@ bool CDBEnv::Open(const boost::filesystem::path& path) if (GetBoolArg("-privdb", true)) nEnvFlags |= DB_PRIVATE; - unsigned int nDbCache = GetArg("-dbcache", 25); dbenv.set_lg_dir(pathLogDir.string().c_str()); - dbenv.set_cachesize(nDbCache / 1024, (nDbCache % 1024)*1048576, 1); - dbenv.set_lg_bsize(1048576); - dbenv.set_lg_max(10485760); + dbenv.set_cachesize(0, 0x100000, 1); // 1 MiB should be enough for just the wallet + dbenv.set_lg_bsize(0x10000); + dbenv.set_lg_max(1048576); dbenv.set_lk_max_locks(40000); dbenv.set_lk_max_objects(40000); dbenv.set_errfile(fopen(pathErrorFile.string().c_str(), "a")); /// debug @@ -109,8 +107,7 @@ void CDBEnv::MakeMock() if (fDbEnvInit) throw runtime_error("CDBEnv::MakeMock(): already initialized"); - if (fShutdown) - throw runtime_error("CDBEnv::MakeMock(): during shutdown"); + boost::this_thread::interruption_point(); printf("CDBEnv::MakeMock()\n"); @@ -328,7 +325,7 @@ bool CDBEnv::RemoveDb(const string& strFile) bool CDB::Rewrite(const string& strFile, const char* pszSkip) { - while (!fShutdown) + while (true) { { LOCK(bitdb.cs_db); @@ -414,7 +411,7 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip) return fSuccess; } } - Sleep(100); + MilliSleep(100); } return false; } |