Log request aggregator

This commit is contained in:
Piotr Wójcik 2025-01-09 20:22:31 +01:00
commit 418c8ec592
4 changed files with 22 additions and 6 deletions

View file

@ -86,6 +86,7 @@ enum class type
monitor,
confirming_set,
bounded_backlog,
request_aggregator,
// bootstrap
bulk_pull_client,

View file

@ -171,7 +171,7 @@ nano::node::node (std::shared_ptr<boost::asio::io_context> io_ctx_a, std::filesy
final_generator{ *final_generator_impl },
scheduler_impl{ std::make_unique<nano::scheduler::component> (config, *this, ledger, bucketing, block_processor, active, online_reps, vote_cache, confirming_set, stats, logger) },
scheduler{ *scheduler_impl },
aggregator_impl{ std::make_unique<nano::request_aggregator> (config.request_aggregator, *this, stats, generator, final_generator, history, ledger, wallets, vote_router) },
aggregator_impl{ std::make_unique<nano::request_aggregator> (config.request_aggregator, *this, generator, final_generator, history, ledger, wallets, vote_router) },
aggregator{ *aggregator_impl },
backlog_scan_impl{ std::make_unique<nano::backlog_scan> (config.backlog_scan, ledger, stats) },
backlog_scan{ *backlog_scan_impl },

View file

@ -15,16 +15,17 @@
#include <nano/secure/ledger_set_confirmed.hpp>
#include <nano/store/component.hpp>
nano::request_aggregator::request_aggregator (request_aggregator_config const & config_a, nano::node & node_a, nano::stats & stats_a, nano::vote_generator & generator_a, nano::vote_generator & final_generator_a, nano::local_vote_history & history_a, nano::ledger & ledger_a, nano::wallets & wallets_a, nano::vote_router & vote_router_a) :
nano::request_aggregator::request_aggregator (request_aggregator_config const & config_a, nano::node & node_a, nano::vote_generator & generator_a, nano::vote_generator & final_generator_a, nano::local_vote_history & history_a, nano::ledger & ledger_a, nano::wallets & wallets_a, nano::vote_router & vote_router_a) :
config{ config_a },
network_constants{ node_a.network_params.network },
stats (stats_a),
local_votes (history_a),
ledger (ledger_a),
wallets (wallets_a),
vote_router{ vote_router_a },
generator (generator_a),
final_generator (final_generator_a)
final_generator (final_generator_a),
stats (node_a.stats),
logger (node_a.logger)
{
queue.max_size_query = [this] (auto const & origin) {
return config.max_queue;
@ -238,15 +239,28 @@ auto nano::request_aggregator::aggregate (nano::secure::transaction const & tran
{
to_generate_final.push_back (block);
stats.inc (nano::stat::type::requests, nano::stat::detail::requests_final);
logger.debug (nano::log::type::request_aggregator, "Replying with final vote for: {} to: {}",
block->hash ().to_string (), // TODO: Lazy eval
channel_a->to_string ()); // TODO: Lazy eval
}
else
{
stats.inc (nano::stat::type::requests, nano::stat::detail::requests_non_final);
logger.debug (nano::log::type::request_aggregator, "Skipping reply with normal vote for: {} (requested by: {})",
block->hash ().to_string (), // TODO: Lazy eval
channel_a->to_string ()); // TODO: Lazy eval
}
}
else
{
stats.inc (nano::stat::type::requests, nano::stat::detail::requests_unknown);
logger.debug (nano::log::type::request_aggregator, "Cannot reply, block not found: {} with root: {} (requested by: {})",
hash.to_string (), // TODO: Lazy eval
root.to_string (), // TODO: Lazy eval
channel_a->to_string ()); // TODO: Lazy eval
}
}

View file

@ -45,7 +45,7 @@ public:
class request_aggregator final
{
public:
request_aggregator (request_aggregator_config const &, nano::node &, nano::stats &, nano::vote_generator &, nano::vote_generator &, nano::local_vote_history &, nano::ledger &, nano::wallets &, nano::vote_router &);
request_aggregator (request_aggregator_config const &, nano::node &, nano::vote_generator &, nano::vote_generator &, nano::local_vote_history &, nano::ledger &, nano::wallets &, nano::vote_router &);
~request_aggregator ();
void start ();
@ -84,13 +84,14 @@ private:
private: // Dependencies
request_aggregator_config const & config;
nano::network_constants const & network_constants;
nano::stats & stats;
nano::local_vote_history & local_votes;
nano::ledger & ledger;
nano::wallets & wallets;
nano::vote_router & vote_router;
nano::vote_generator & generator;
nano::vote_generator & final_generator;
nano::stats & stats;
nano::logger & logger;
private:
using value_type = std::pair<request_type, std::shared_ptr<nano::transport::channel>>;