diff --git a/nano/core_test/block_store.cpp b/nano/core_test/block_store.cpp index c8033103e..cf1e948bc 100644 --- a/nano/core_test/block_store.cpp +++ b/nano/core_test/block_store.cpp @@ -633,7 +633,7 @@ TEST (mdb_block_store, supported_version_upgrades) { nano::store::lmdb::component store (logger, path, nano::dev::constants); nano::stats stats{ logger }; - nano::ledger ledger (store, stats, nano::dev::constants); + nano::ledger ledger (store, nano::dev::constants, stats, logger); auto transaction (store.tx_begin_write ()); store.initialize (transaction, ledger.cache, nano::dev::constants); // Lower the database to the max version unsupported for upgrades @@ -651,7 +651,7 @@ TEST (mdb_block_store, supported_version_upgrades) { nano::store::lmdb::component store (logger, path1, nano::dev::constants); nano::stats stats{ logger }; - nano::ledger ledger (store, stats, nano::dev::constants); + nano::ledger ledger (store, nano::dev::constants, stats, logger); auto transaction (store.tx_begin_write ()); store.initialize (transaction, ledger.cache, nano::dev::constants); // Lower the database version to the minimum version supported for upgrade. @@ -899,7 +899,7 @@ TEST (block_store, cemented_count_cache) ASSERT_TRUE (!store->init_error ()); auto transaction (store->tx_begin_write ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); store->initialize (transaction, ledger.cache, nano::dev::constants); ASSERT_EQ (1, ledger.cemented_count ()); } @@ -987,7 +987,7 @@ TEST (mdb_block_store, sideband_height) nano::store::lmdb::component store (logger, nano::unique_path () / "data.ldb", nano::dev::constants); ASSERT_FALSE (store.init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (store, stats, nano::dev::constants); + nano::ledger ledger (store, nano::dev::constants, stats, logger); nano::block_builder builder; auto transaction = ledger.tx_begin_write (); store.initialize (transaction, ledger.cache, nano::dev::constants); diff --git a/nano/core_test/ledger.cpp b/nano/core_test/ledger.cpp index f39cfb3b6..c4372f671 100644 --- a/nano/core_test/ledger.cpp +++ b/nano/core_test/ledger.cpp @@ -871,7 +871,7 @@ TEST (ledger, double_open) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; @@ -4736,7 +4736,7 @@ TEST (ledger, dependents_confirmed_pruning) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_FALSE (store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -4811,6 +4811,7 @@ TEST (ledger, cache) auto & ledger = ctx.ledger (); auto & store = ctx.store (); auto & stats = ctx.stats (); + auto & logger = ctx.logger (); auto & pool = ctx.pool (); nano::block_builder builder; @@ -4861,7 +4862,7 @@ TEST (ledger, cache) ++block_count; --genesis_weight; cache_check (ledger); - cache_check (nano::ledger (store, stats, nano::dev::constants)); + cache_check (nano::ledger (store, nano::dev::constants, stats, logger)); { auto transaction = ledger.tx_begin_write (); @@ -4871,7 +4872,7 @@ TEST (ledger, cache) ++block_count; ++account_count; cache_check (ledger); - cache_check (nano::ledger (store, stats, nano::dev::constants)); + cache_check (nano::ledger (store, nano::dev::constants, stats, logger)); { auto transaction = ledger.tx_begin_write (); @@ -4881,7 +4882,7 @@ TEST (ledger, cache) ++cemented_count; cache_check (ledger); - cache_check (nano::ledger (store, stats, nano::dev::constants)); + cache_check (nano::ledger (store, nano::dev::constants, stats, logger)); { auto transaction = ledger.tx_begin_write (); @@ -4891,7 +4892,7 @@ TEST (ledger, cache) ++cemented_count; cache_check (ledger); - cache_check (nano::ledger (store, stats, nano::dev::constants)); + cache_check (nano::ledger (store, nano::dev::constants, stats, logger)); { auto transaction = ledger.tx_begin_write (); @@ -4899,7 +4900,7 @@ TEST (ledger, cache) } ++pruned_count; cache_check (ledger); - cache_check (nano::ledger (store, stats, nano::dev::constants)); + cache_check (nano::ledger (store, nano::dev::constants, stats, logger)); } } @@ -4909,7 +4910,7 @@ TEST (ledger, pruning_action) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -4995,7 +4996,7 @@ TEST (ledger, pruning_large_chain) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -5051,7 +5052,7 @@ TEST (ledger, pruning_source_rollback) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -5140,7 +5141,7 @@ TEST (ledger, pruning_source_rollback_legacy) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -5254,7 +5255,7 @@ TEST (ledger, pruning_legacy_blocks) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; nano::keypair key1; auto transaction = ledger.tx_begin_write (); @@ -5341,7 +5342,7 @@ TEST (ledger, pruning_safe_functions) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -5393,7 +5394,7 @@ TEST (ledger, random_blocks) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); @@ -5481,7 +5482,7 @@ TEST (ledger, migrate_lmdb_to_rocksdb) boost::asio::ip::address_v6 address (boost::asio::ip::make_address_v6 ("::ffff:127.0.0.1")); uint16_t port = 100; nano::store::lmdb::component store{ logger, path / "data.ldb", nano::dev::constants }; - nano::ledger ledger{ store, system.stats, nano::dev::constants }; + nano::ledger ledger{ store, nano::dev::constants, system.stats, system.logger }; nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; std::shared_ptr send = nano::state_block_builder () diff --git a/nano/core_test/ledger_confirm.cpp b/nano/core_test/ledger_confirm.cpp index 5663154cc..7cb489250 100644 --- a/nano/core_test/ledger_confirm.cpp +++ b/nano/core_test/ledger_confirm.cpp @@ -760,7 +760,7 @@ TEST (ledger_confirm, pruned_source) auto path (nano::unique_path ()); auto store = nano::make_store (system.logger, path, nano::dev::constants); ASSERT_TRUE (!store->init_error ()); - nano::ledger ledger (*store, system.stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, system.stats, system.logger); ledger.pruning = true; nano::store::write_queue write_queue; nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; @@ -845,7 +845,7 @@ TEST (ledger_confirmDeathTest, rollback_added_block) auto path (nano::unique_path ()); auto store = nano::make_store (system.logger, path, nano::dev::constants); ASSERT_TRUE (!store->init_error ()); - nano::ledger ledger (*store, system.stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, system.stats, system.logger); nano::store::write_queue write_queue; nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; nano::keypair key1; diff --git a/nano/core_test/processor_service.cpp b/nano/core_test/processor_service.cpp index 4f41fa5d5..44796a949 100644 --- a/nano/core_test/processor_service.cpp +++ b/nano/core_test/processor_service.cpp @@ -18,7 +18,7 @@ TEST (processor_service, bad_send_signature) auto store = nano::make_store (system.logger, nano::unique_path (), nano::dev::constants); ASSERT_FALSE (store->init_error ()); - nano::ledger ledger (*store, system.stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, system.stats, system.logger); auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; @@ -44,7 +44,7 @@ TEST (processor_service, bad_receive_signature) auto store = nano::make_store (system.logger, nano::unique_path (), nano::dev::constants); ASSERT_FALSE (store->init_error ()); - nano::ledger ledger (*store, system.stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, system.stats, system.logger); auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; diff --git a/nano/lib/fwd.hpp b/nano/lib/fwd.hpp index 8c7e915c6..03cb6664f 100644 --- a/nano/lib/fwd.hpp +++ b/nano/lib/fwd.hpp @@ -12,10 +12,12 @@ class block_details; class block_visitor; class container_info; class jsonconfig; +class logger; class mutable_block_visitor; class network_constants; class object_stream; class root; +class stats; class thread_pool; class thread_runner; class tomlconfig; diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 30e54a7cd..ac35c1d40 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -117,7 +117,7 @@ nano::node::node (std::shared_ptr io_ctx_a, std::filesy wallets_store{ *wallets_store_impl }, wallets_impl{ std::make_unique (wallets_store.init_error (), *this) }, wallets{ *wallets_impl }, - ledger_impl{ std::make_unique (store, stats, network_params.ledger, flags_a.generate_cache, config_a.representative_vote_weight_minimum.number ()) }, + ledger_impl{ std::make_unique (store, network_params.ledger, stats, logger, flags_a.generate_cache, config_a.representative_vote_weight_minimum.number ()) }, ledger{ *ledger_impl }, ledger_notifications_impl{ std::make_unique (config, stats, logger) }, ledger_notifications{ *ledger_notifications_impl }, diff --git a/nano/qt_test/qt.cpp b/nano/qt_test/qt.cpp index c76f88dd7..8a77289e5 100644 --- a/nano/qt_test/qt.cpp +++ b/nano/qt_test/qt.cpp @@ -518,9 +518,10 @@ TEST (history, short_text) } auto wallet (std::make_shared (*test_application, processor, *system.nodes[0], system.wallet (0), account)); nano::logger logger; + nano::stats stats{ logger }; auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); - nano::ledger ledger (*store, system.nodes[0]->stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); { auto transaction (ledger.tx_begin_write ()); store->initialize (transaction, ledger.cache, ledger.constants); @@ -556,9 +557,10 @@ TEST (history, pruned_source) } auto wallet (std::make_shared (*test_application, processor, *system.nodes[0], system.wallet (0), account)); nano::logger logger; + nano::stats stats{ logger }; auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_TRUE (!store->init_error ()); - nano::ledger ledger (*store, system.nodes[0]->stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); ledger.pruning = true; nano::block_hash next_pruning; // Basic pruning for legacy blocks. Previous block is pruned, source is pruned diff --git a/nano/secure/fwd.hpp b/nano/secure/fwd.hpp index bf0de82c8..d33606c11 100644 --- a/nano/secure/fwd.hpp +++ b/nano/secure/fwd.hpp @@ -1,5 +1,7 @@ #pragma once +#include + namespace nano { class account_info; @@ -8,8 +10,13 @@ class ledger; class ledger_cache; class ledger_constants; class network_params; +class pending_info; +class pending_key; class vote; + +enum class block_status; } + namespace nano::secure { class read_transaction; diff --git a/nano/secure/ledger.cpp b/nano/secure/ledger.cpp index 28710beb9..8b4697fed 100644 --- a/nano/secure/ledger.cpp +++ b/nano/secure/ledger.cpp @@ -717,11 +717,12 @@ void representative_visitor::state_block (nano::state_block const & block_a) * ledger */ -nano::ledger::ledger (nano::store::component & store_a, nano::stats & stat_a, nano::ledger_constants & constants, nano::generate_cache_flags const & generate_cache_flags_a, nano::uint128_t min_rep_weight_a) : - constants{ constants }, +nano::ledger::ledger (nano::store::component & store_a, nano::ledger_constants & constants_a, nano::stats & stats_a, nano::logger & logger_a, nano::generate_cache_flags const & generate_cache_flags_a, nano::uint128_t min_rep_weight_a) : + constants{ constants_a }, store{ store_a }, cache{ store_a.rep_weight, min_rep_weight_a }, - stats{ stat_a }, + stats{ stats_a }, + logger{ logger_a }, any_impl{ std::make_unique (*this) }, confirmed_impl{ std::make_unique (*this) }, any{ *any_impl }, @@ -1307,8 +1308,6 @@ auto nano::ledger::block_priority (nano::secure::transaction const & transaction // A precondition is that the store is an LMDB store bool nano::ledger::migrate_lmdb_to_rocksdb (std::filesystem::path const & data_path_a) const { - nano::logger logger; - logger.info (nano::log::type::ledger, "Migrating LMDB database to RocksDB. This will take a while..."); std::filesystem::space_info si = std::filesystem::space (data_path_a); diff --git a/nano/secure/ledger.hpp b/nano/secure/ledger.hpp index e0ca0d74d..2134a97e9 100644 --- a/nano/secure/ledger.hpp +++ b/nano/secure/ledger.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -19,15 +20,8 @@ class component; namespace nano { -class block; -enum class block_status; -enum class epoch : uint8_t; -class ledger_constants; class ledger_set_any; class ledger_set_confirmed; -class pending_info; -class pending_key; -class stats; class ledger final { @@ -35,7 +29,7 @@ class ledger final friend class receivable_iterator; public: - ledger (nano::store::component &, nano::stats &, nano::ledger_constants & constants, nano::generate_cache_flags const & = nano::generate_cache_flags{}, nano::uint128_t min_rep_weight_a = 0); + ledger (nano::store::component &, nano::ledger_constants &, nano::stats &, nano::logger &, nano::generate_cache_flags const & = nano::generate_cache_flags{}, nano::uint128_t min_rep_weight_a = 0); ~ledger (); /** Start read-write transaction */ @@ -102,6 +96,7 @@ public: nano::store::component & store; nano::ledger_cache cache; nano::stats & stats; + nano::logger & logger; std::unordered_map bootstrap_weights; uint64_t bootstrap_weight_max_blocks{ 1 }; diff --git a/nano/slow_test/node.cpp b/nano/slow_test/node.cpp index b5c4ef613..9bd9863cb 100644 --- a/nano/slow_test/node.cpp +++ b/nano/slow_test/node.cpp @@ -132,7 +132,7 @@ TEST (ledger, deep_account_compute) auto store = nano::make_store (logger, nano::unique_path (), nano::dev::constants); ASSERT_FALSE (store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); auto transaction = ledger.tx_begin_write (); store->initialize (transaction, ledger.cache, ledger.constants); nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; @@ -1134,7 +1134,7 @@ TEST (confirmation_height, many_accounts_send_receive_self_no_elections) auto store = nano::make_store (logger, path, nano::dev::constants); ASSERT_TRUE (!store->init_error ()); nano::stats stats{ logger }; - nano::ledger ledger (*store, stats, nano::dev::constants); + nano::ledger ledger (*store, nano::dev::constants, stats, logger); nano::store::write_queue write_database_queue; nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits::max () }; std::atomic stopped{ false }; diff --git a/nano/store/component.hpp b/nano/store/component.hpp index f458e352c..962c1307c 100644 --- a/nano/store/component.hpp +++ b/nano/store/component.hpp @@ -77,7 +77,7 @@ namespace store virtual void rebuild_db (write_transaction const & transaction_a) = 0; /** Not applicable to all sub-classes */ - virtual void serialize_mdb_tracker (::boost::property_tree::ptree &, std::chrono::milliseconds, std::chrono::milliseconds) { }; + virtual void serialize_mdb_tracker (::boost::property_tree::ptree &, std::chrono::milliseconds, std::chrono::milliseconds){}; virtual void serialize_memory_stats (::boost::property_tree::ptree &) = 0; virtual bool init_error () const = 0; diff --git a/nano/test_common/ledger_context.cpp b/nano/test_common/ledger_context.cpp index e9a6b33c4..6ae4b0fa4 100644 --- a/nano/test_common/ledger_context.cpp +++ b/nano/test_common/ledger_context.cpp @@ -6,7 +6,7 @@ nano::test::ledger_context::ledger_context (std::deque> && blocks) : store_m{ nano::make_store (logger_m, nano::unique_path (), nano::dev::constants) }, stats_m{ logger_m }, - ledger_m{ *store_m, stats_m, nano::dev::constants }, + ledger_m{ *store_m, nano::dev::constants, stats_m, logger_m }, blocks_m{ blocks }, pool_m{ nano::dev::network_params.network, 1 } {