aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Dong <contact@carldong.me>2020-08-25 15:23:57 -0400
committerCarl Dong <contact@carldong.me>2020-09-15 14:11:34 -0400
commit74f73c783d46b012f375d819e2cd09c792820cd5 (patch)
tree9c351abe4519267e6c57ce65b195b819e2ca3e2e
parent4668ded6d6ea4299d998abbb57543f37519812e2 (diff)
downloadbitcoin-74f73c783d46b012f375d819e2cd09c792820cd5.tar.xz
validation: Pass in chainman to UnloadBlockIndex
-rw-r--r--src/init.cpp2
-rw-r--r--src/qt/test/apptests.cpp7
-rw-r--r--src/test/util/setup_common.cpp2
-rw-r--r--src/validation.cpp4
-rw-r--r--src/validation.h2
5 files changed, 10 insertions, 7 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 7dceef7fff..90bf3c6461 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1559,7 +1559,7 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
chainman.m_total_coinstip_cache = nCoinCacheUsage;
chainman.m_total_coinsdb_cache = nCoinDBCache;
- UnloadBlockIndex(node.mempool.get());
+ UnloadBlockIndex(node.mempool.get(), chainman);
// new CBlockTreeDB tries to delete the existing file, which
// fails if it's still open from the previous loop. Close it first:
diff --git a/src/qt/test/apptests.cpp b/src/qt/test/apptests.cpp
index 0b5c341548..8dffd2f59f 100644
--- a/src/qt/test/apptests.cpp
+++ b/src/qt/test/apptests.cpp
@@ -84,8 +84,11 @@ void AppTests::appTests()
// Reset global state to avoid interfering with later tests.
LogInstance().DisconnectTestLogger();
AbortShutdown();
- UnloadBlockIndex(/* mempool */ nullptr);
- WITH_LOCK(::cs_main, g_chainman.Reset());
+ {
+ LOCK(cs_main);
+ UnloadBlockIndex(/* mempool */ nullptr, g_chainman);
+ g_chainman.Reset();
+ }
}
//! Entry point for BitcoinGUI tests.
diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp
index 08aff07448..2d3137e1e2 100644
--- a/src/test/util/setup_common.cpp
+++ b/src/test/util/setup_common.cpp
@@ -187,7 +187,7 @@ TestingSetup::~TestingSetup()
m_node.connman.reset();
m_node.banman.reset();
m_node.args = nullptr;
- UnloadBlockIndex(m_node.mempool.get());
+ UnloadBlockIndex(m_node.mempool.get(), *m_node.chainman);
m_node.mempool.reset();
m_node.scheduler.reset();
m_node.chainman->Reset();
diff --git a/src/validation.cpp b/src/validation.cpp
index 5beff88a01..7478fb5510 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -4605,10 +4605,10 @@ void CChainState::UnloadBlockIndex() {
// May NOT be used after any connections are up as much
// of the peer-processing logic assumes a consistent
// block index state
-void UnloadBlockIndex(CTxMemPool* mempool)
+void UnloadBlockIndex(CTxMemPool* mempool, ChainstateManager& chainman)
{
LOCK(cs_main);
- g_chainman.Unload();
+ chainman.Unload();
pindexBestInvalid = nullptr;
pindexBestHeader = nullptr;
if (mempool) mempool->clear();
diff --git a/src/validation.h b/src/validation.h
index 12d1d4c91f..2d9d2cb918 100644
--- a/src/validation.h
+++ b/src/validation.h
@@ -159,7 +159,7 @@ void LoadExternalBlockFile(const CChainParams& chainparams, FILE* fileIn, FlatFi
/** Ensures we have a genesis block in the block tree, possibly writing one to disk. */
bool LoadGenesisBlock(const CChainParams& chainparams);
/** Unload database information */
-void UnloadBlockIndex(CTxMemPool* mempool);
+void UnloadBlockIndex(CTxMemPool* mempool, ChainstateManager& chainman);
/** Run an instance of the script checking thread */
void ThreadScriptCheck(int worker_num);
/**