mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 03:22:47 +01:00
node/chainstate: Decouple from concept of uiInterface
This commit is contained in:
parent
913411ed73
commit
a141f5d9a7
@ -1892,7 +1892,12 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||
fReindexChainState,
|
||||
nBlockTreeDBCache,
|
||||
nCoinDBCache,
|
||||
nCoinCacheUsage);
|
||||
nCoinCacheUsage,
|
||||
[]() {
|
||||
uiInterface.ThreadSafeMessageBox(
|
||||
_("Error reading from database, shutting down."),
|
||||
"", CClientUIInterface::MSG_ERROR);
|
||||
});
|
||||
if (rv.has_value()) {
|
||||
switch (rv.value()) {
|
||||
case ChainstateLoadingError::ERROR_LOADING_BLOCK_DB:
|
||||
@ -1946,6 +1951,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
uiInterface.InitMessage(_("Verifying blocks…").translated);
|
||||
auto rv2 = VerifyLoadedChainstate(chainman,
|
||||
*Assert(node.evodb.get()),
|
||||
fReset,
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <rpc/blockchain.h> // for RPCNotifyBlockChange
|
||||
#include <util/time.h> // for GetTime
|
||||
#include <node/blockstorage.h> // for CleanupBlockRevFiles, fHavePruned, fReindex
|
||||
#include <node/ui_interface.h> // for InitError, uiInterface, and CClientUIInterface member access
|
||||
#include <shutdown.h> // for ShutdownRequested
|
||||
#include <validation.h> // for a lot of things
|
||||
|
||||
@ -50,7 +49,8 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
|
||||
bool fReindexChainState,
|
||||
int64_t nBlockTreeDBCache,
|
||||
int64_t nCoinDBCache,
|
||||
int64_t nCoinCacheUsage)
|
||||
int64_t nCoinCacheUsage,
|
||||
std::function<void()> coins_error_cb)
|
||||
{
|
||||
auto is_coinsview_empty = [&](CChainState* chainstate) EXCLUSIVE_LOCKS_REQUIRED(::cs_main) {
|
||||
return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull();
|
||||
@ -181,11 +181,9 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
|
||||
/* in_memory */ false,
|
||||
/* should_wipe */ fReset || fReindexChainState);
|
||||
|
||||
chainstate->CoinsErrorCatcher().AddReadErrCallback([]() {
|
||||
uiInterface.ThreadSafeMessageBox(
|
||||
_("Error reading from database, shutting down."),
|
||||
"", CClientUIInterface::MSG_ERROR);
|
||||
});
|
||||
if (coins_error_cb) {
|
||||
chainstate->CoinsErrorCatcher().AddReadErrCallback(coins_error_cb);
|
||||
}
|
||||
|
||||
// If necessary, upgrade from older database format.
|
||||
// This is a no-op if we cleared the coinsviewdb with -reindex or -reindex-chainstate
|
||||
@ -250,7 +248,6 @@ std::optional<ChainstateLoadVerifyError> VerifyLoadedChainstate(ChainstateManage
|
||||
|
||||
for (CChainState* chainstate : chainman.GetAll()) {
|
||||
if (!is_coinsview_empty(chainstate)) {
|
||||
uiInterface.InitMessage(_("Verifying blocks…").translated);
|
||||
if (chainman.m_blockman.m_have_pruned && check_blocks > MIN_BLOCKS_TO_KEEP) {
|
||||
LogPrintf("Prune: pruned datadir may not have more than %d blocks; only checking available blocks\n",
|
||||
MIN_BLOCKS_TO_KEEP);
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define BITCOIN_NODE_CHAINSTATE_H
|
||||
|
||||
#include <cstdint> // for int64_t
|
||||
#include <functional> // for std::function
|
||||
#include <memory> // for std::unique_ptr
|
||||
#include <optional> // for std::optional
|
||||
|
||||
@ -103,7 +104,8 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
|
||||
bool fReindexChainState,
|
||||
int64_t nBlockTreeDBCache,
|
||||
int64_t nCoinDBCache,
|
||||
int64_t nCoinCacheUsage);
|
||||
int64_t nCoinCacheUsage,
|
||||
std::function<void()> coins_error_cb = nullptr);
|
||||
|
||||
enum class ChainstateLoadVerifyError {
|
||||
ERROR_BLOCK_FROM_FUTURE,
|
||||
|
Loading…
Reference in New Issue
Block a user