aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2017-01-06 09:28:46 -0800
committerPieter Wuille <pieter.wuille@gmail.com>2017-01-06 09:37:43 -0800
commit46b249e578e8a3dfbe85bc7253a12e82ef4b658b (patch)
tree282787752e6f7ddd76587ebc060f5e52cab3d3a4
parenta55716abe5662ec74c2f8af93023f1e7cca901fc (diff)
parent325e400f9ba89c6f5501c6cedd4dee979a3912b2 (diff)
downloadbitcoin-46b249e578e8a3dfbe85bc7253a12e82ef4b658b.tar.xz
Merge #9408: Allow shutdown during LoadMempool, dump only when necessary
325e400 [Qt] Do proper shutdown (Jonas Schnelli) 9479f8d Allow shutdown during LoadMempool, dump only when necessary (Jonas Schnelli)
-rw-r--r--src/init.cpp5
-rw-r--r--src/qt/bitcoin.cpp2
-rw-r--r--src/validation.cpp2
3 files changed, 8 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 4dfa7a452d..992ce8ebdc 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -130,6 +130,7 @@ static const char* FEE_ESTIMATES_FILENAME="fee_estimates.dat";
//
std::atomic<bool> fRequestShutdown(false);
+std::atomic<bool> fDumpMempoolLater(false);
void StartShutdown()
{
@@ -211,7 +212,8 @@ void Shutdown()
StopTorControl();
UnregisterNodeSignals(GetNodeSignals());
- DumpMempool();
+ if (fDumpMempoolLater)
+ DumpMempool();
if (fFeeEstimatesInitialized)
{
@@ -669,6 +671,7 @@ void ThreadImport(std::vector<boost::filesystem::path> vImportFiles)
}
} // End scope of CImportingNow
LoadMempool();
+ fDumpMempoolLater = !fRequestShutdown;
}
/** Sanity checks
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 16b5893753..72f5f4aac9 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -444,6 +444,8 @@ void BitcoinApplication::requestShutdown()
delete clientModel;
clientModel = 0;
+ StartShutdown();
+
// Request shutdown from core thread
Q_EMIT requestedShutdown();
}
diff --git a/src/validation.cpp b/src/validation.cpp
index 648fed8bc6..37a4186e0a 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -4099,6 +4099,8 @@ bool LoadMempool(void)
} else {
++skipped;
}
+ if (ShutdownRequested())
+ return false;
}
std::map<uint256, CAmount> mapDeltas;
file >> mapDeltas;