diff options
author | Jonas Schnelli <dev@jonasschnelli.ch> | 2017-06-23 09:33:31 +0200 |
---|---|---|
committer | Jonas Schnelli <dev@jonasschnelli.ch> | 2017-06-29 17:48:11 +0200 |
commit | ae09d4583b26251e67fa48216ebafb6bcdf2472b (patch) | |
tree | e21d6a89dee9ed86302240201eec4a1e41ffda8d | |
parent | 00cb69bc8655b1c17064a7e42453fd049e555076 (diff) |
Allow to shut down during txdb upgrade
-rw-r--r-- | src/init.cpp | 5 | ||||
-rw-r--r-- | src/txdb.cpp | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/init.cpp b/src/init.cpp index d59713258c..ec1f18faef 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1358,7 +1358,7 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("* Using %.1fMiB for in-memory UTXO set (plus up to %.1fMiB of unused mempool space)\n", nCoinCacheUsage * (1.0 / 1024 / 1024), nMempoolSizeMax * (1.0 / 1024 / 1024)); bool fLoaded = false; - while (!fLoaded) { + while (!fLoaded && !fRequestShutdown) { bool fReset = fReindex; std::string strLoadError; @@ -1389,6 +1389,7 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler) break; } } + if (fRequestShutdown) break; if (!LoadBlockIndex(chainparams)) { strLoadError = _("Error loading block database"); @@ -1466,7 +1467,7 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler) fLoaded = true; } while(false); - if (!fLoaded) { + if (!fLoaded && !fRequestShutdown) { // first suggest a reindex if (!fReset) { bool fRet = uiInterface.ThreadSafeQuestion( diff --git a/src/txdb.cpp b/src/txdb.cpp index d24162ba2d..3e05683d1e 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -371,6 +371,9 @@ bool CCoinsViewDB::Upgrade() { CDBBatch batch(db); while (pcursor->Valid()) { boost::this_thread::interruption_point(); + if (ShutdownRequested()) { + break; + } std::pair<unsigned char, uint256> key; if (pcursor->GetKey(key) && key.first == DB_COINS) { CCoins old_coins; |