From f82f161df1b10b2afee0d225ef73ea958882db10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:53:47 +0100 Subject: [PATCH] Differentiate normal and final generator thread roles (#4838) --- nano/lib/thread_roles.cpp | 6 +++--- nano/lib/thread_roles.hpp | 2 +- nano/node/vote_generator.cpp | 6 +++--- nano/node/vote_generator.hpp | 4 +--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/nano/lib/thread_roles.cpp b/nano/lib/thread_roles.cpp index 7f5e349e2d..a7a9917415 100644 --- a/nano/lib/thread_roles.cpp +++ b/nano/lib/thread_roles.cpp @@ -61,6 +61,9 @@ std::string nano::thread_role::get_string (nano::thread_role::name role) case nano::thread_role::name::voting: thread_role_name_string = "Voting"; break; + case nano::thread_role::name::voting_final: + thread_role_name_string = "Voting final"; + break; case nano::thread_role::name::signature_checking: thread_role_name_string = "Signature check"; break; @@ -109,9 +112,6 @@ std::string nano::thread_role::get_string (nano::thread_role::name role) case nano::thread_role::name::bounded_backlog_scan: thread_role_name_string = "Bounded b scan"; break; - case nano::thread_role::name::vote_generator_queue: - thread_role_name_string = "Voting que"; - break; case nano::thread_role::name::bootstrap: thread_role_name_string = "Bootstrap"; break; diff --git a/nano/lib/thread_roles.hpp b/nano/lib/thread_roles.hpp index 2f359177c5..fb4bcd5e22 100644 --- a/nano/lib/thread_roles.hpp +++ b/nano/lib/thread_roles.hpp @@ -25,6 +25,7 @@ enum class name bootstrap_initiator, bootstrap_connections, voting, + voting_final, signature_checking, rpc_request_processor, rpc_process_container, @@ -41,7 +42,6 @@ enum class name backlog_scan, bounded_backlog, bounded_backlog_scan, - vote_generator_queue, telemetry, bootstrap, bootstrap_database_scan, diff --git a/nano/node/vote_generator.cpp b/nano/node/vote_generator.cpp index c1651a69c1..9e10e4c393 100644 --- a/nano/node/vote_generator.cpp +++ b/nano/node/vote_generator.cpp @@ -29,8 +29,8 @@ nano::vote_generator::vote_generator (nano::node_config const & config_a, nano:: stats (stats_a), logger (logger_a), is_final (is_final_a), - vote_generation_queue{ stats, nano::stat::type::vote_generator, nano::thread_role::name::vote_generator_queue, /* single threaded */ 1, /* max queue size */ 1024 * 32, /* max batch size */ 256 }, - inproc_channel{ std::make_shared (node, node) } + inproc_channel{ std::make_shared (node, node) }, + vote_generation_queue{ stats, nano::stat::type::vote_generator, is_final ? nano::thread_role::name::voting_final : nano::thread_role::name::voting, /* single threaded */ 1, /* max queue size */ 1024 * 32, /* max batch size */ 256 } { vote_generation_queue.process_batch = [this] (auto & batch) { process_batch (batch); @@ -77,7 +77,7 @@ void nano::vote_generator::start () { debug_assert (!thread.joinable ()); thread = std::thread ([this] () { - nano::thread_role::set (nano::thread_role::name::voting); + nano::thread_role::set (is_final ? nano::thread_role::name::voting_final : nano::thread_role::name::voting); run (); }); vote_generation_queue.start (); diff --git a/nano/node/vote_generator.hpp b/nano/node/vote_generator.hpp index dbec5fb25f..4f27dc44c0 100644 --- a/nano/node/vote_generator.hpp +++ b/nano/node/vote_generator.hpp @@ -71,9 +71,6 @@ class vote_generator final nano::stats & stats; nano::logger & logger; -private: - nano::processing_queue vote_generation_queue; - private: const bool is_final; mutable nano::mutex mutex; @@ -84,5 +81,6 @@ class vote_generator final std::atomic stopped{ false }; std::thread thread; std::shared_ptr inproc_channel; + nano::processing_queue vote_generation_queue; }; }