diff --git a/nano/lib/stats_enums.hpp b/nano/lib/stats_enums.hpp index d855b029..ee5629ad 100644 --- a/nano/lib/stats_enums.hpp +++ b/nano/lib/stats_enums.hpp @@ -93,6 +93,7 @@ enum class type message_processor, message_processor_overfill, message_processor_type, + process_confirmed, _last // Must be the last enum }; @@ -134,6 +135,8 @@ enum class detail cemented, cooldown, empty, + done, + retry, // processing queue queue, diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 43829823..346c20ae 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -1149,12 +1149,15 @@ void nano::node::process_confirmed (nano::election_status const & status_a, uint decltype (iteration_a) const num_iters = (config.block_processor_batch_max_time / network_params.node.process_confirmed_interval) * 4; if (auto block_l = ledger.any.block_get (ledger.tx_begin_read (), hash)) { + stats.inc (nano::stat::type::process_confirmed, nano::stat::detail::done); logger.trace (nano::log::type::node, nano::log::detail::process_confirmed, nano::log::arg{ "block", block_l }); confirming_set.add (block_l->hash ()); } else if (iteration_a < num_iters) { + stats.inc (nano::stat::type::process_confirmed, nano::stat::detail::retry); + iteration_a++; std::weak_ptr node_w (shared ()); election_workers.add_timed_task (std::chrono::steady_clock::now () + network_params.node.process_confirmed_interval, [node_w, status_a, iteration_a] () { @@ -1166,6 +1169,8 @@ void nano::node::process_confirmed (nano::election_status const & status_a, uint } else { + stats.inc (nano::stat::type::process_confirmed, nano::stat::detail::timeout); + // Do some cleanup due to this block never being processed by confirmation height processor active.remove_election_winner_details (hash); }