mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 22:18:54 +01:00
init: don't start indexes sync thread prematurely
By moving the 'StartIndexes()' call into the 'initload' thread, we can remove the threads active wait. Optimizing the available resources. The only difference with the current state is that now the indexes threads will only be started when they can process work and not before it.
This commit is contained in:
11
src/init.cpp
11
src/init.cpp
@@ -1570,9 +1570,6 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||
// Init indexes
|
||||
for (auto index : node.indexes) if (!index->Init()) return false;
|
||||
|
||||
// Now that all indexes are loaded, start them
|
||||
if (!StartIndexBackgroundSync(node)) return false;
|
||||
|
||||
// ********************************************************* Step 9: load wallet
|
||||
for (const auto& client : node.chain_clients) {
|
||||
if (!client->load()) {
|
||||
@@ -1656,9 +1653,15 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||
vImportFiles.push_back(fs::PathFromString(strFile));
|
||||
}
|
||||
|
||||
chainman.m_thread_load = std::thread(&util::TraceThread, "initload", [=, &chainman, &args] {
|
||||
chainman.m_thread_load = std::thread(&util::TraceThread, "initload", [=, &chainman, &args, &node] {
|
||||
// Import blocks
|
||||
ImportBlocks(chainman, vImportFiles);
|
||||
// Start indexes initial sync
|
||||
if (!StartIndexBackgroundSync(node)) {
|
||||
bilingual_str err_str = _("Failed to start indexes, shutting down..");
|
||||
chainman.GetNotifications().fatalError(err_str.original, err_str);
|
||||
return;
|
||||
}
|
||||
// Load mempool from disk
|
||||
chainman.ActiveChainstate().LoadMempool(ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user