node/chainstate: Reduce coupling of LogPrintf

...by moving the try/catch out of LoadChainstate

I strongly recommend reviewing with the following git-diff flags:
  --color-moved=dimmed_zebra --color-moved-ws=allow-indentation-change
This commit is contained in:
Carl Dong committed 2021-12-06 16:41:58 -05:00
1 parent b345979a2b
commit aad8d59789
2 files changed
+16 -10

No files matched your search

+14 -2
View File
@@ -1419,7 +1419,9 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
uiInterface.InitMessage(_("Loading block index…").translated); uiInterface.InitMessage(_("Loading block index…").translated);
const int64_t load_block_index_start_time = GetTimeMillis(); const int64_t load_block_index_start_time = GetTimeMillis();
auto rv = LoadChainstate(fReset, std::optional<ChainstateLoadingError> rv;
try {
rv = LoadChainstate(fReset,
chainman, chainman,
Assert(node.mempool.get()), Assert(node.mempool.get()),
fPruneMode, fPruneMode,
@@ -1433,6 +1435,10 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
_("Error reading from database, shutting down."), _("Error reading from database, shutting down."),
"", CClientUIInterface::MSG_ERROR); "", CClientUIInterface::MSG_ERROR);
}); });
} catch (const std::exception& e) {
LogPrintf("%s\n", e.what());
rv = ChainstateLoadingError::ERROR_GENERIC_BLOCKDB_OPEN_FAILED;
}
if (rv.has_value()) { if (rv.has_value()) {
switch (rv.value()) { switch (rv.value()) {
case ChainstateLoadingError::ERROR_LOADING_BLOCK_DB: case ChainstateLoadingError::ERROR_LOADING_BLOCK_DB:
@@ -1468,13 +1474,19 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
break; break;
} }
} else { } else {
std::optional<ChainstateLoadVerifyError> rv2;
try {
uiInterface.InitMessage(_("Verifying blocks…").translated); uiInterface.InitMessage(_("Verifying blocks…").translated);
auto rv2 = VerifyLoadedChainstate(chainman, rv2 = VerifyLoadedChainstate(chainman,
fReset, fReset,
fReindexChainState, fReindexChainState,
chainparams, chainparams,
args.GetIntArg("-checkblocks", DEFAULT_CHECKBLOCKS), args.GetIntArg("-checkblocks", DEFAULT_CHECKBLOCKS),
args.GetIntArg("-checklevel", DEFAULT_CHECKLEVEL)); args.GetIntArg("-checklevel", DEFAULT_CHECKLEVEL));
} catch (const std::exception& e) {
LogPrintf("%s\n", e.what());
rv2 = ChainstateLoadVerifyError::ERROR_GENERIC_FAILURE;
}
if (rv2.has_value()) { if (rv2.has_value()) {
switch (rv2.value()) { switch (rv2.value()) {
case ChainstateLoadVerifyError::ERROR_BLOCK_FROM_FUTURE: case ChainstateLoadVerifyError::ERROR_BLOCK_FROM_FUTURE:
+2 -8
View File
@@ -26,7 +26,7 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull(); return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull();
}; };
try { {
LOCK(cs_main); LOCK(cs_main);
chainman.InitializeChainstate(mempool); chainman.InitializeChainstate(mempool);
chainman.m_total_coinstip_cache = nCoinCacheUsage; chainman.m_total_coinstip_cache = nCoinCacheUsage;
@@ -113,9 +113,6 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
assert(chainstate->m_chain.Tip() != nullptr); assert(chainstate->m_chain.Tip() != nullptr);
} }
} }
} catch (const std::exception& e) {
LogPrintf("%s\n", e.what());
return ChainstateLoadingError::ERROR_GENERIC_BLOCKDB_OPEN_FAILED;
} }
if (!fReset) { if (!fReset) {
@@ -141,7 +138,7 @@ std::optional<ChainstateLoadVerifyError> VerifyLoadedChainstate(ChainstateManage
return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull(); return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull();
}; };
try { {
LOCK(cs_main); LOCK(cs_main);
for (CChainState* chainstate : chainman.GetAll()) { for (CChainState* chainstate : chainman.GetAll()) {
@@ -165,9 +162,6 @@ std::optional<ChainstateLoadVerifyError> VerifyLoadedChainstate(ChainstateManage
} }
} }
} }
} catch (const std::exception& e) {
LogPrintf("%s\n", e.what());
return ChainstateLoadVerifyError::ERROR_GENERIC_FAILURE;
} }
return std::nullopt; return std::nullopt;