mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
scripted-diff: rename 'loadblk' thread name to 'initload'
The thread does not only load blocks, it loads the mempool and, in a future commit, will start the indexes as well. Also, renamed the 'ThreadImport' function to 'ImportBlocks' And the 'm_load_block' class member to 'm_thread_load'. -BEGIN VERIFY SCRIPT- sed -i "s/ThreadImport/ImportBlocks/g" $(git grep -l ThreadImport -- ':!/doc/') sed -i "s/loadblk/initload/g" $(git grep -l loadblk -- ':!/doc/release-notes/') sed -i "s/m_load_block/m_thread_load/g" $(git grep -l m_load_block) -END VERIFY SCRIPT-
This commit is contained in:
parent
ed4462cc78
commit
04575106b2
9 changed files with 14 additions and 14 deletions
|
@ -621,7 +621,7 @@ Threads
|
||||||
: Started from `main()` in `bitcoind.cpp`. Responsible for starting up and
|
: Started from `main()` in `bitcoind.cpp`. Responsible for starting up and
|
||||||
shutting down the application.
|
shutting down the application.
|
||||||
|
|
||||||
- [ThreadImport (`b-loadblk`)](https://doxygen.bitcoincore.org/namespacenode.html#ab4305679079866f0f420f7dbf278381d)
|
- [ThreadImport (`b-initload`)](https://doxygen.bitcoincore.org/namespacenode.html#ab4305679079866f0f420f7dbf278381d)
|
||||||
: Loads blocks from `blk*.dat` files or `-loadblock=<file>` on startup.
|
: Loads blocks from `blk*.dat` files or `-loadblock=<file>` on startup.
|
||||||
|
|
||||||
- [CCheckQueue::Loop (`b-scriptch.x`)](https://doxygen.bitcoincore.org/class_c_check_queue.html#a6e7fa51d3a25e7cb65446d4b50e6a987)
|
- [CCheckQueue::Loop (`b-scriptch.x`)](https://doxygen.bitcoincore.org/class_c_check_queue.html#a6e7fa51d3a25e7cb65446d4b50e6a987)
|
||||||
|
|
|
@ -287,7 +287,7 @@ epilogue:
|
||||||
// Without this precise shutdown sequence, there will be a lot of nullptr
|
// Without this precise shutdown sequence, there will be a lot of nullptr
|
||||||
// dereferencing and UB.
|
// dereferencing and UB.
|
||||||
scheduler.stop();
|
scheduler.stop();
|
||||||
if (chainman.m_load_block.joinable()) chainman.m_load_block.join();
|
if (chainman.m_thread_load.joinable()) chainman.m_thread_load.join();
|
||||||
StopScriptCheckWorkerThreads();
|
StopScriptCheckWorkerThreads();
|
||||||
|
|
||||||
GetMainSignals().FlushBackgroundCallbacks();
|
GetMainSignals().FlushBackgroundCallbacks();
|
||||||
|
|
12
src/init.cpp
12
src/init.cpp
|
@ -131,7 +131,7 @@ using node::LoadChainstate;
|
||||||
using node::MempoolPath;
|
using node::MempoolPath;
|
||||||
using node::NodeContext;
|
using node::NodeContext;
|
||||||
using node::ShouldPersistMempool;
|
using node::ShouldPersistMempool;
|
||||||
using node::ThreadImport;
|
using node::ImportBlocks;
|
||||||
using node::VerifyLoadedChainstate;
|
using node::VerifyLoadedChainstate;
|
||||||
|
|
||||||
static constexpr bool DEFAULT_PROXYRANDOMIZE{true};
|
static constexpr bool DEFAULT_PROXYRANDOMIZE{true};
|
||||||
|
@ -268,7 +268,7 @@ void Shutdown(NodeContext& node)
|
||||||
// After everything has been shut down, but before things get flushed, stop the
|
// After everything has been shut down, but before things get flushed, stop the
|
||||||
// CScheduler/checkqueue, scheduler and load block thread.
|
// CScheduler/checkqueue, scheduler and load block thread.
|
||||||
if (node.scheduler) node.scheduler->stop();
|
if (node.scheduler) node.scheduler->stop();
|
||||||
if (node.chainman && node.chainman->m_load_block.joinable()) node.chainman->m_load_block.join();
|
if (node.chainman && node.chainman->m_thread_load.joinable()) node.chainman->m_thread_load.join();
|
||||||
StopScriptCheckWorkerThreads();
|
StopScriptCheckWorkerThreads();
|
||||||
|
|
||||||
// After the threads that potentially access these pointers have been stopped,
|
// After the threads that potentially access these pointers have been stopped,
|
||||||
|
@ -1545,7 +1545,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||||
|
|
||||||
// ********************************************************* Step 8: start indexers
|
// ********************************************************* Step 8: start indexers
|
||||||
|
|
||||||
// If reindex-chainstate was specified, delay syncing indexes until ThreadImport has reindexed the chain
|
// If reindex-chainstate was specified, delay syncing indexes until ImportBlocks has reindexed the chain
|
||||||
if (!fReindexChainState) g_indexes_ready_to_sync = true;
|
if (!fReindexChainState) g_indexes_ready_to_sync = true;
|
||||||
if (args.GetBoolArg("-txindex", DEFAULT_TXINDEX)) {
|
if (args.GetBoolArg("-txindex", DEFAULT_TXINDEX)) {
|
||||||
auto result{WITH_LOCK(cs_main, return CheckLegacyTxindex(*Assert(chainman.m_blockman.m_block_tree_db)))};
|
auto result{WITH_LOCK(cs_main, return CheckLegacyTxindex(*Assert(chainman.m_blockman.m_block_tree_db)))};
|
||||||
|
@ -1656,9 +1656,9 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||||
vImportFiles.push_back(fs::PathFromString(strFile));
|
vImportFiles.push_back(fs::PathFromString(strFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
chainman.m_load_block = std::thread(&util::TraceThread, "loadblk", [=, &chainman, &args] {
|
chainman.m_thread_load = std::thread(&util::TraceThread, "initload", [=, &chainman, &args] {
|
||||||
// Import blocks
|
// Import blocks
|
||||||
ThreadImport(chainman, vImportFiles);
|
ImportBlocks(chainman, vImportFiles);
|
||||||
// Load mempool from disk
|
// Load mempool from disk
|
||||||
chainman.ActiveChainstate().LoadMempool(ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{});
|
chainman.ActiveChainstate().LoadMempool(ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{});
|
||||||
});
|
});
|
||||||
|
@ -1667,7 +1667,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||||
{
|
{
|
||||||
WAIT_LOCK(g_genesis_wait_mutex, lock);
|
WAIT_LOCK(g_genesis_wait_mutex, lock);
|
||||||
// We previously could hang here if StartShutdown() is called prior to
|
// We previously could hang here if StartShutdown() is called prior to
|
||||||
// ThreadImport getting started, so instead we just wait on a timer to
|
// ImportBlocks getting started, so instead we just wait on a timer to
|
||||||
// check ShutdownRequested() regularly.
|
// check ShutdownRequested() regularly.
|
||||||
while (!fHaveGenesis && !ShutdownRequested()) {
|
while (!fHaveGenesis && !ShutdownRequested()) {
|
||||||
g_genesis_wait_cv.wait_for(lock, std::chrono::milliseconds(500));
|
g_genesis_wait_cv.wait_for(lock, std::chrono::milliseconds(500));
|
||||||
|
|
|
@ -868,7 +868,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void ThreadImport(ChainstateManager& chainman, std::vector<fs::path> vImportFiles)
|
void ImportBlocks(ChainstateManager& chainman, std::vector<fs::path> vImportFiles)
|
||||||
{
|
{
|
||||||
ScheduleBatchPriority();
|
ScheduleBatchPriority();
|
||||||
|
|
||||||
|
|
|
@ -255,7 +255,7 @@ public:
|
||||||
void CleanupBlockRevFiles() const;
|
void CleanupBlockRevFiles() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ThreadImport(ChainstateManager& chainman, std::vector<fs::path> vImportFiles);
|
void ImportBlocks(ChainstateManager& chainman, std::vector<fs::path> vImportFiles);
|
||||||
} // namespace node
|
} // namespace node
|
||||||
|
|
||||||
#endif // BITCOIN_NODE_BLOCKSTORAGE_H
|
#endif // BITCOIN_NODE_BLOCKSTORAGE_H
|
||||||
|
|
|
@ -82,7 +82,7 @@ static ChainstateLoadResult CompleteChainstateInitialization(
|
||||||
// At this point blocktree args are consistent with what's on disk.
|
// At this point blocktree args are consistent with what's on disk.
|
||||||
// If we're not mid-reindex (based on disk + args), add a genesis block on disk
|
// If we're not mid-reindex (based on disk + args), add a genesis block on disk
|
||||||
// (otherwise we use the one already on disk).
|
// (otherwise we use the one already on disk).
|
||||||
// This is called again in ThreadImport after the reindex completes.
|
// This is called again in ImportBlocks after the reindex completes.
|
||||||
if (!fReindex && !chainman.ActiveChainstate().LoadGenesisBlock()) {
|
if (!fReindex && !chainman.ActiveChainstate().LoadGenesisBlock()) {
|
||||||
return {ChainstateLoadStatus::FAILURE, _("Error initializing block database")};
|
return {ChainstateLoadStatus::FAILURE, _("Error initializing block database")};
|
||||||
}
|
}
|
||||||
|
|
|
@ -987,7 +987,7 @@ public:
|
||||||
|
|
||||||
const util::SignalInterrupt& m_interrupt;
|
const util::SignalInterrupt& m_interrupt;
|
||||||
const Options m_options;
|
const Options m_options;
|
||||||
std::thread m_load_block;
|
std::thread m_thread_load;
|
||||||
//! A single BlockManager instance is shared across each constructed
|
//! A single BlockManager instance is shared across each constructed
|
||||||
//! chainstate to avoid duplicating block metadata.
|
//! chainstate to avoid duplicating block metadata.
|
||||||
node::BlockManager m_blockman;
|
node::BlockManager m_blockman;
|
||||||
|
|
|
@ -71,7 +71,7 @@ class InitStressTest(BitcoinTestFramework):
|
||||||
b'init message: Starting network threads',
|
b'init message: Starting network threads',
|
||||||
b'net thread start',
|
b'net thread start',
|
||||||
b'addcon thread start',
|
b'addcon thread start',
|
||||||
b'loadblk thread start',
|
b'initload thread start',
|
||||||
b'txindex thread start',
|
b'txindex thread start',
|
||||||
b'block filter index thread start',
|
b'block filter index thread start',
|
||||||
b'coinstatsindex thread start',
|
b'coinstatsindex thread start',
|
||||||
|
|
|
@ -250,7 +250,7 @@ class TestNode():
|
||||||
# Wait for the node to finish reindex, block import, and
|
# Wait for the node to finish reindex, block import, and
|
||||||
# loading the mempool. Usually importing happens fast or
|
# loading the mempool. Usually importing happens fast or
|
||||||
# even "immediate" when the node is started. However, there
|
# even "immediate" when the node is started. However, there
|
||||||
# is no guarantee and sometimes ThreadImport might finish
|
# is no guarantee and sometimes ImportBlocks might finish
|
||||||
# later. This is going to cause intermittent test failures,
|
# later. This is going to cause intermittent test failures,
|
||||||
# because generally the tests assume the node is fully
|
# because generally the tests assume the node is fully
|
||||||
# ready after being started.
|
# ready after being started.
|
||||||
|
|
Loading…
Add table
Reference in a new issue