diff options
author | furszy <matiasfurszyfer@protonmail.com> | 2023-05-17 16:06:55 -0300 |
---|---|---|
committer | furszy <matiasfurszyfer@protonmail.com> | 2023-07-10 10:50:50 -0300 |
commit | fcbdaeef4d5a63e3e5b479c6fcad730eb86fb923 (patch) | |
tree | e266b0cab828adc38232b388fd6bd3ff0538bdd7 /src | |
parent | 2ec89f1970935d27631bcd17b7923a79cdb1edbb (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/index/base.cpp | 6 | ||||
-rw-r--r-- | src/init.cpp | 11 |
2 files changed, 7 insertions, 10 deletions
diff --git a/src/index/base.cpp b/src/index/base.cpp index 8accc2a6a4..1babfacb15 100644 --- a/src/index/base.cpp +++ b/src/index/base.cpp @@ -163,12 +163,6 @@ static const CBlockIndex* NextSyncBlock(const CBlockIndex* pindex_prev, CChain& void BaseIndex::ThreadSync() { - // Wait for a possible reindex-chainstate to finish until continuing - // with the index sync - while (!g_indexes_ready_to_sync) { - if (!m_interrupt.sleep_for(std::chrono::milliseconds(500))) return; - } - const CBlockIndex* pindex = m_best_block_index.load(); if (!m_synced) { std::chrono::steady_clock::time_point last_log_time{0s}; diff --git a/src/init.cpp b/src/init.cpp index 102e7932cd..389654fe4f 100644 --- a/src/init.cpp +++ b/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{}); }); |