mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
validation: Farewell, global Chainstate!
This commit is contained in:
parent
972c5166ee
commit
6f994882de
7 changed files with 8 additions and 35 deletions
|
@ -283,7 +283,7 @@ void Shutdown(NodeContext& node)
|
|||
init::UnsetGlobals();
|
||||
node.mempool.reset();
|
||||
node.fee_estimator.reset();
|
||||
node.chainman = nullptr;
|
||||
node.chainman.reset();
|
||||
node.scheduler.reset();
|
||||
|
||||
try {
|
||||
|
@ -1179,8 +1179,8 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
|||
node.mempool = std::make_unique<CTxMemPool>(node.fee_estimator.get(), check_ratio);
|
||||
|
||||
assert(!node.chainman);
|
||||
node.chainman = &g_chainman;
|
||||
ChainstateManager& chainman = *Assert(node.chainman);
|
||||
node.chainman = std::make_unique<ChainstateManager>();
|
||||
ChainstateManager& chainman = *node.chainman;
|
||||
|
||||
assert(!node.peerman);
|
||||
node.peerman = PeerManager::make(chainparams, *node.connman, *node.addrman, node.banman.get(),
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <policy/fees.h>
|
||||
#include <scheduler.h>
|
||||
#include <txmempool.h>
|
||||
#include <validation.h>
|
||||
|
||||
NodeContext::NodeContext() {}
|
||||
NodeContext::~NodeContext() {}
|
||||
|
|
|
@ -44,7 +44,7 @@ struct NodeContext {
|
|||
std::unique_ptr<CTxMemPool> mempool;
|
||||
std::unique_ptr<CBlockPolicyEstimator> fee_estimator;
|
||||
std::unique_ptr<PeerManager> peerman;
|
||||
ChainstateManager* chainman{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
|
||||
std::unique_ptr<ChainstateManager> chainman;
|
||||
std::unique_ptr<BanMan> banman;
|
||||
ArgsManager* args{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
|
||||
std::unique_ptr<interfaces::Chain> chain;
|
||||
|
|
|
@ -125,7 +125,7 @@ static ChainstateManager* GetChainman(const std::any& context, HTTPRequest* req)
|
|||
__FILE__, __LINE__, __func__, PACKAGE_BUGREPORT));
|
||||
return nullptr;
|
||||
}
|
||||
return node_context->chainman;
|
||||
return node_context->chainman.get();
|
||||
}
|
||||
|
||||
static RetFormat ParseDataFormat(std::string& param, const std::string& strReq)
|
||||
|
|
|
@ -145,7 +145,7 @@ ChainTestingSetup::ChainTestingSetup(const std::string& chainName, const std::ve
|
|||
m_node.fee_estimator = std::make_unique<CBlockPolicyEstimator>();
|
||||
m_node.mempool = std::make_unique<CTxMemPool>(m_node.fee_estimator.get(), 1);
|
||||
|
||||
m_node.chainman = &::g_chainman;
|
||||
m_node.chainman = std::make_unique<ChainstateManager>();
|
||||
|
||||
// Start script-checking threads. Set g_parallel_script_checks to true so they are used.
|
||||
constexpr int script_check_threads = 2;
|
||||
|
@ -167,7 +167,7 @@ ChainTestingSetup::~ChainTestingSetup()
|
|||
m_node.mempool.reset();
|
||||
m_node.scheduler.reset();
|
||||
m_node.chainman->Reset();
|
||||
m_node.chainman = nullptr;
|
||||
m_node.chainman.reset();
|
||||
pblocktree.reset();
|
||||
}
|
||||
|
||||
|
|
|
@ -101,21 +101,6 @@ bool CBlockIndexWorkComparator::operator()(const CBlockIndex *pa, const CBlockIn
|
|||
return false;
|
||||
}
|
||||
|
||||
ChainstateManager g_chainman;
|
||||
|
||||
CChainState& ChainstateActive()
|
||||
{
|
||||
LOCK(::cs_main);
|
||||
assert(g_chainman.m_active_chainstate);
|
||||
return *g_chainman.m_active_chainstate;
|
||||
}
|
||||
|
||||
CChain& ChainActive()
|
||||
{
|
||||
LOCK(::cs_main);
|
||||
return ::ChainstateActive().m_chain;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutex to guard access to validation specific variables, such as reading
|
||||
* or changing the chainstate.
|
||||
|
|
|
@ -891,10 +891,6 @@ private:
|
|||
CAutoFile& coins_file,
|
||||
const SnapshotMetadata& metadata);
|
||||
|
||||
// For access to m_active_chainstate.
|
||||
friend CChainState& ChainstateActive();
|
||||
friend CChain& ChainActive();
|
||||
|
||||
public:
|
||||
std::thread m_load_block;
|
||||
//! A single BlockManager instance is shared across each constructed
|
||||
|
@ -1025,15 +1021,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/** DEPRECATED! Please use node.chainman instead. May only be used in validation.cpp internally */
|
||||
extern ChainstateManager g_chainman GUARDED_BY(::cs_main);
|
||||
|
||||
/** Please prefer the identical ChainstateManager::ActiveChainstate */
|
||||
CChainState& ChainstateActive();
|
||||
|
||||
/** Please prefer the identical ChainstateManager::ActiveChain */
|
||||
CChain& ChainActive();
|
||||
|
||||
/** Global variable that points to the active block tree (protected by cs_main) */
|
||||
extern std::unique_ptr<CBlockTreeDB> pblocktree;
|
||||
|
||||
|
|
Loading…
Reference in a new issue