Differentiate normal and final generator thread roles (#4838)

This commit is contained in:
Piotr Wójcik 2025-01-31 09:53:47 +01:00 committed by GitHub
commit f82f161df1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 8 additions and 10 deletions

View file

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

View file

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

View file

@ -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<nano::transport::inproc::channel> (node, node) }
inproc_channel{ std::make_shared<nano::transport::inproc::channel> (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 ();

View file

@ -71,9 +71,6 @@ private: // Dependencies
nano::stats & stats;
nano::logger & logger;
private:
nano::processing_queue<queue_entry_t> vote_generation_queue;
private:
const bool is_final;
mutable nano::mutex mutex;
@ -84,5 +81,6 @@ private:
std::atomic<bool> stopped{ false };
std::thread thread;
std::shared_ptr<nano::transport::channel> inproc_channel;
nano::processing_queue<queue_entry_t> vote_generation_queue;
};
}