Clear {versionbits,warning}cache in ~Chainstatemanager

Also add TODO item to deglobalize the {versionbits,warning}cache, which
should really only need to be cleared if we change the chainparams.
This commit is contained in:
Carl Dong
2022-01-11 14:49:28 -05:00
parent eca4ca4d60
commit 572d831927
2 changed files with 14 additions and 8 deletions

View File

@@ -4151,10 +4151,6 @@ void UnloadBlockIndex(CTxMemPool* mempool, ChainstateManager& chainman)
AssertLockHeld(::cs_main);
chainman.Unload();
if (mempool) mempool->clear();
g_versionbitscache.Clear();
for (auto& i : warningcache) {
i.clear();
}
}
bool ChainstateManager::LoadBlockIndex()
@@ -5231,3 +5227,16 @@ void ChainstateManager::MaybeRebalanceCaches()
}
}
}
ChainstateManager::~ChainstateManager()
{
LOCK(::cs_main);
UnloadBlockIndex(/*mempool=*/nullptr, *this);
// TODO: The version bits cache and warning cache should probably become
// non-globals
g_versionbitscache.Clear();
for (auto& i : warningcache) {
i.clear();
}
}