From 63e4c7316a537900f525e221d8042587b443cc3d Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Tue, 15 Sep 2020 15:59:46 -0400 Subject: [PATCH] validation: Pass in chainstate to ::PruneBlockFilesManual --- src/rpc/blockchain.cpp | 2 +- src/validation.cpp | 5 +++-- src/validation.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index bb6c7e32efa..568b3d98ac3 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1015,7 +1015,7 @@ static RPCHelpMan pruneblockchain() height = chainHeight - MIN_BLOCKS_TO_KEEP; } - PruneBlockFilesManual(height); + PruneBlockFilesManual(::ChainstateActive(), height); const CBlockIndex* block = ::ChainActive().Tip(); CHECK_NONFATAL(block); while (block->pprev && (block->pprev->nStatus & BLOCK_HAVE_DATA)) { diff --git a/src/validation.cpp b/src/validation.cpp index f7faa12458c..95fb3f68643 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -3953,11 +3953,12 @@ void BlockManager::FindFilesToPruneManual(std::set& setFilesToPrune, int nM } /* This function is called from the RPC code for pruneblockchain */ -void PruneBlockFilesManual(int nManualPruneHeight) +void PruneBlockFilesManual(CChainState& active_chainstate, int nManualPruneHeight) { BlockValidationState state; const CChainParams& chainparams = Params(); - if (!::ChainstateActive().FlushStateToDisk( + assert(std::addressof(::ChainstateActive()) == std::addressof(active_chainstate)); + if (!active_chainstate.FlushStateToDisk( chainparams, state, FlushStateMode::NONE, nManualPruneHeight)) { LogPrintf("%s: failed to flush state (%s)\n", __func__, state.ToString()); } diff --git a/src/validation.h b/src/validation.h index 73b17c6353e..9855c131e13 100644 --- a/src/validation.h +++ b/src/validation.h @@ -183,7 +183,7 @@ uint64_t CalculateCurrentUsage(); void UnlinkPrunedFiles(const std::set& setFilesToPrune); /** Prune block files up to a given height */ -void PruneBlockFilesManual(int nManualPruneHeight); +void PruneBlockFilesManual(CChainState& active_chainstate, int nManualPruneHeight); /** * Validation result for a single transaction mempool acceptance.