Pass logger to ledger

This commit is contained in:
Piotr Wójcik 2025-02-23 23:16:22 +01:00
commit d683379e8e
13 changed files with 49 additions and 43 deletions

View file

@ -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);

View file

@ -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<unsigned>::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<unsigned>::max () };
std::shared_ptr<nano::block> send = nano::state_block_builder ()

View file

@ -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<unsigned>::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<unsigned>::max () };
nano::keypair key1;

View file

@ -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<unsigned>::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<unsigned>::max () };

View file

@ -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;

View file

@ -117,7 +117,7 @@ nano::node::node (std::shared_ptr<boost::asio::io_context> io_ctx_a, std::filesy
wallets_store{ *wallets_store_impl },
wallets_impl{ std::make_unique<nano::wallets> (wallets_store.init_error (), *this) },
wallets{ *wallets_impl },
ledger_impl{ std::make_unique<nano::ledger> (store, stats, network_params.ledger, flags_a.generate_cache, config_a.representative_vote_weight_minimum.number ()) },
ledger_impl{ std::make_unique<nano::ledger> (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<nano::ledger_notifications> (config, stats, logger) },
ledger_notifications{ *ledger_notifications_impl },

View file

@ -518,9 +518,10 @@ TEST (history, short_text)
}
auto wallet (std::make_shared<nano_qt::wallet> (*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<nano_qt::wallet> (*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

View file

@ -1,5 +1,7 @@
#pragma once
#include <nano/lib/fwd.hpp>
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;

View file

@ -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<ledger_set_any> (*this) },
confirmed_impl{ std::make_unique<ledger_set_confirmed> (*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);

View file

@ -3,6 +3,7 @@
#include <nano/lib/numbers.hpp>
#include <nano/lib/timer.hpp>
#include <nano/secure/account_info.hpp>
#include <nano/secure/fwd.hpp>
#include <nano/secure/generate_cache_flags.hpp>
#include <nano/secure/ledger_cache.hpp>
#include <nano/secure/pending_info.hpp>
@ -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<nano::account, nano::uint128_t> bootstrap_weights;
uint64_t bootstrap_weight_max_blocks{ 1 };

View file

@ -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<unsigned>::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<unsigned>::max () };
std::atomic<bool> stopped{ false };

View file

@ -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;

View file

@ -6,7 +6,7 @@
nano::test::ledger_context::ledger_context (std::deque<std::shared_ptr<nano::block>> && 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 }
{