Skip to content

Commit aadd7c5

Browse files
committed
refactor, validation: Add ChainstateManagerOpts db options
Use ChainstateManagerOpts struct to remove ArgsManager uses from validation.cpp. This commit does not change behavior.
1 parent 0352258 commit aadd7c5

File tree

8 files changed

+23
-9
lines changed

8 files changed

+23
-9
lines changed

src/bitcoin-chainstate.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ int main(int argc, char* argv[])
8282
// SETUP: Chainstate
8383
const ChainstateManager::Options chainman_opts{
8484
.chainparams = chainparams,
85+
.datadir = gArgs.GetDataDirNet(),
8586
.adjusted_time_callback = NodeClock::now,
8687
};
8788
ChainstateManager chainman{chainman_opts};

src/init.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,7 @@ bool AppInitParameterInteraction(const ArgsManager& args, bool use_syscall_sandb
10461046
{
10471047
ChainstateManager::Options chainman_opts_dummy{
10481048
.chainparams = chainparams,
1049+
.datadir = args.GetDataDirNet(),
10491050
};
10501051
if (const auto error{ApplyArgsManOptions(args, chainman_opts_dummy)}) {
10511052
return InitError(*error);
@@ -1444,6 +1445,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
14441445
bool fReindexChainState = args.GetBoolArg("-reindex-chainstate", false);
14451446
ChainstateManager::Options chainman_opts{
14461447
.chainparams = chainparams,
1448+
.datadir = args.GetDataDirNet(),
14471449
.adjusted_time_callback = GetAdjustedTime,
14481450
};
14491451
Assert(!ApplyArgsManOptions(args, chainman_opts)); // no error can happen, already checked in AppInitParameterInteraction

src/kernel/chainstatemanager_opts.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#define BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H
77

88
#include <arith_uint256.h>
9+
#include <dbwrapper.h>
10+
#include <txdb.h>
911
#include <uint256.h>
1012
#include <util/time.h>
1113

@@ -27,6 +29,7 @@ namespace kernel {
2729
*/
2830
struct ChainstateManagerOpts {
2931
const CChainParams& chainparams;
32+
fs::path datadir;
3033
const std::function<NodeClock::time_point()> adjusted_time_callback{nullptr};
3134
std::optional<bool> check_block_index{};
3235
bool checkpoints_enabled{DEFAULT_CHECKPOINTS_ENABLED};
@@ -36,6 +39,9 @@ struct ChainstateManagerOpts {
3639
std::optional<uint256> assumed_valid_block{};
3740
//! If the tip is older than this, the node is considered to be in initial block download.
3841
std::chrono::seconds max_tip_age{DEFAULT_MAX_TIP_AGE};
42+
DBOptions block_tree_db{};
43+
DBOptions coins_db{};
44+
CoinsViewOptions coins_view{};
3945
};
4046

4147
} // namespace kernel

src/node/chainstate.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@
1010
#include <consensus/params.h>
1111
#include <logging.h>
1212
#include <node/blockstorage.h>
13-
#include <node/database_args.h>
1413
#include <node/caches.h>
1514
#include <sync.h>
1615
#include <threadsafety.h>
1716
#include <tinyformat.h>
1817
#include <txdb.h>
1918
#include <uint256.h>
20-
#include <util/system.h>
2119
#include <util/time.h>
2220
#include <util/translation.h>
2321
#include <validation.h>
@@ -67,11 +65,11 @@ ChainstateLoadResult LoadChainstate(ChainstateManager& chainman, const CacheSize
6765
// fails if it's still open from the previous loop. Close it first:
6866
pblocktree.reset();
6967
pblocktree = std::make_unique<CBlockTreeDB>(DBParams{
70-
.path = gArgs.GetDataDirNet() / "blocks" / "index",
68+
.path = chainman.m_options.datadir / "blocks" / "index",
7169
.cache_bytes = static_cast<size_t>(cache_sizes.block_tree_db),
7270
.memory_only = options.block_tree_db_in_memory,
7371
.wipe_data = options.reindex,
74-
.options = [] { DBOptions options; node::ReadDatabaseArgs(gArgs, options); return options; }()});
72+
.options = chainman.m_options.block_tree_db});
7573

7674
if (options.reindex) {
7775
pblocktree->WriteReindexing(true);

src/node/chainstatemanager_args.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#include <node/chainstatemanager_args.h>
66

77
#include <arith_uint256.h>
8+
#include <kernel/chainstatemanager_opts.h>
9+
#include <node/coins_view_args.h>
10+
#include <node/database_args.h>
811
#include <tinyformat.h>
912
#include <uint256.h>
1013
#include <util/strencodings.h>
@@ -34,6 +37,10 @@ std::optional<bilingual_str> ApplyArgsManOptions(const ArgsManager& args, Chains
3437

3538
if (auto value{args.GetIntArg("-maxtipage")}) opts.max_tip_age = std::chrono::seconds{*value};
3639

40+
ReadDatabaseArgs(args, opts.block_tree_db);
41+
ReadDatabaseArgs(args, opts.coins_db);
42+
ReadCoinsViewArgs(args, opts.coins_view);
43+
3744
return std::nullopt;
3845
}
3946
} // namespace node

src/test/util/setup_common.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ ChainTestingSetup::ChainTestingSetup(const std::string& chainName, const std::ve
180180

181181
const ChainstateManager::Options chainman_opts{
182182
.chainparams = chainparams,
183+
.datadir = m_args.GetDataDirNet(),
183184
.adjusted_time_callback = GetAdjustedTime,
184185
.check_block_index = true,
185186
};

src/test/validation_chainstatemanager_tests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ struct SnapshotTestSetup : TestChain100Setup {
374374
BOOST_CHECK_EQUAL(chainman.GetAll().size(), 0);
375375
const ChainstateManager::Options chainman_opts{
376376
.chainparams = ::Params(),
377+
.datadir = m_args.GetDataDirNet(),
377378
.adjusted_time_callback = GetAdjustedTime,
378379
};
379380
// For robustness, ensure the old manager is destroyed before creating a

src/validation.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
#include <node/blockstorage.h>
2929
#include <node/interface_ui.h>
3030
#include <node/utxo_snapshot.h>
31-
#include <node/coins_view_args.h>
32-
#include <node/database_args.h>
3331
#include <policy/policy.h>
3432
#include <policy/rbf.h>
3533
#include <policy/settings.h>
@@ -1545,13 +1543,13 @@ void Chainstate::InitCoinsDB(
15451543

15461544
m_coins_views = std::make_unique<CoinsViews>(
15471545
DBParams{
1548-
.path = gArgs.GetDataDirNet() / leveldb_name,
1546+
.path = m_chainman.m_options.datadir / leveldb_name,
15491547
.cache_bytes = cache_size_bytes,
15501548
.memory_only = in_memory,
15511549
.wipe_data = should_wipe,
15521550
.obfuscate = true,
1553-
.options = [] { DBOptions options; node::ReadDatabaseArgs(gArgs, options); return options; }()},
1554-
[] { CoinsViewOptions options; node::ReadCoinsViewArgs(gArgs, options); return options; }());
1551+
.options = m_chainman.m_options.coins_db},
1552+
m_chainman.m_options.coins_view);
15551553
}
15561554

15571555
void Chainstate::InitCoinsCache(size_t cache_size_bytes)

0 commit comments

Comments
 (0)