Cleanup
This commit is contained in:
parent
e9608c89e5
commit
f14154507e
6 changed files with 22 additions and 16 deletions
|
|
@ -145,6 +145,7 @@ enum class detail
|
|||
retry,
|
||||
prioritized,
|
||||
pending,
|
||||
sync,
|
||||
|
||||
// processing queue
|
||||
queue,
|
||||
|
|
@ -459,6 +460,7 @@ enum class detail
|
|||
timestamp_reset,
|
||||
processing_frontiers,
|
||||
frontiers_dropped,
|
||||
sync_accounts,
|
||||
|
||||
prioritize,
|
||||
prioritize_failed,
|
||||
|
|
@ -492,6 +494,7 @@ enum class detail
|
|||
deprioritize,
|
||||
deprioritize_failed,
|
||||
sync_dependencies,
|
||||
dependency_synced,
|
||||
|
||||
request_blocks,
|
||||
request_account_info,
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ std::string nano::thread_role::get_string (nano::thread_role::name role)
|
|||
case nano::thread_role::name::bootstrap_database_scan:
|
||||
thread_role_name_string = "Bootstrap db";
|
||||
break;
|
||||
case nano::thread_role::name::bootstrap_dependendy_walker:
|
||||
case nano::thread_role::name::bootstrap_dependency_walker:
|
||||
thread_role_name_string = "Bootstrap walkr";
|
||||
break;
|
||||
case nano::thread_role::name::bootstrap_frontier_scan:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ enum class name
|
|||
telemetry,
|
||||
bootstrap,
|
||||
bootstrap_database_scan,
|
||||
bootstrap_dependendy_walker,
|
||||
bootstrap_dependency_walker,
|
||||
bootstrap_frontier_scan,
|
||||
bootstrap_cleanup,
|
||||
bootstrap_worker,
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@ nano::block_hash nano::bootstrap::account_sets::next_blocking (std::function<boo
|
|||
|
||||
void nano::bootstrap::account_sets::sync_dependencies ()
|
||||
{
|
||||
stats.inc (nano::stat::type::bootstrap_account_sets, nano::stat::detail::sync_dependencies);
|
||||
|
||||
// Sample all accounts with a known dependency account (> account 0)
|
||||
auto begin = blocking.get<tag_dependency_account> ().upper_bound (nano::account{ 0 });
|
||||
auto end = blocking.get<tag_dependency_account> ().end ();
|
||||
|
|
@ -287,7 +289,7 @@ void nano::bootstrap::account_sets::sync_dependencies ()
|
|||
|
||||
if (!blocked (entry.dependency_account) && !prioritized (entry.dependency_account))
|
||||
{
|
||||
stats.inc (nano::stat::type::bootstrap_account_sets, nano::stat::detail::sync_dependencies);
|
||||
stats.inc (nano::stat::type::bootstrap_account_sets, nano::stat::detail::dependency_synced);
|
||||
priority_set (entry.dependency_account);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ nano::bootstrap_service::~bootstrap_service ()
|
|||
debug_assert (!database_thread.joinable ());
|
||||
debug_assert (!dependencies_thread.joinable ());
|
||||
debug_assert (!frontiers_thread.joinable ());
|
||||
debug_assert (!timeout_thread.joinable ());
|
||||
debug_assert (!cleanup_thread.joinable ());
|
||||
debug_assert (!workers.alive ());
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ void nano::bootstrap_service::start ()
|
|||
debug_assert (!database_thread.joinable ());
|
||||
debug_assert (!dependencies_thread.joinable ());
|
||||
debug_assert (!frontiers_thread.joinable ());
|
||||
debug_assert (!timeout_thread.joinable ());
|
||||
debug_assert (!cleanup_thread.joinable ());
|
||||
|
||||
if (!config.enable)
|
||||
{
|
||||
|
|
@ -99,7 +99,7 @@ void nano::bootstrap_service::start ()
|
|||
if (config.enable_dependency_walker)
|
||||
{
|
||||
dependencies_thread = std::thread ([this] () {
|
||||
nano::thread_role::set (nano::thread_role::name::bootstrap_dependendy_walker);
|
||||
nano::thread_role::set (nano::thread_role::name::bootstrap_dependency_walker);
|
||||
run_dependencies ();
|
||||
});
|
||||
}
|
||||
|
|
@ -112,7 +112,7 @@ void nano::bootstrap_service::start ()
|
|||
});
|
||||
}
|
||||
|
||||
timeout_thread = std::thread ([this] () {
|
||||
cleanup_thread = std::thread ([this] () {
|
||||
nano::thread_role::set (nano::thread_role::name::bootstrap_cleanup);
|
||||
run_timeouts ();
|
||||
});
|
||||
|
|
@ -130,7 +130,7 @@ void nano::bootstrap_service::stop ()
|
|||
nano::join_or_pass (database_thread);
|
||||
nano::join_or_pass (dependencies_thread);
|
||||
nano::join_or_pass (frontiers_thread);
|
||||
nano::join_or_pass (timeout_thread);
|
||||
nano::join_or_pass (cleanup_thread);
|
||||
|
||||
workers.stop ();
|
||||
}
|
||||
|
|
@ -418,7 +418,7 @@ nano::block_hash nano::bootstrap_service::next_blocking ()
|
|||
debug_assert (!mutex.try_lock ());
|
||||
|
||||
auto blocking = accounts.next_blocking ([this] (nano::block_hash const & hash) {
|
||||
return count_tags (hash, query_source::blocking) == 0;
|
||||
return count_tags (hash, query_source::dependencies) == 0;
|
||||
});
|
||||
if (blocking.is_zero ())
|
||||
{
|
||||
|
|
@ -590,7 +590,7 @@ void nano::bootstrap_service::run_database ()
|
|||
}
|
||||
}
|
||||
|
||||
void nano::bootstrap_service::run_one_blocking ()
|
||||
void nano::bootstrap_service::run_one_dependency ()
|
||||
{
|
||||
// No need to wait for blockprocessor, as we are not processing blocks
|
||||
auto channel = wait_channel ();
|
||||
|
|
@ -603,7 +603,7 @@ void nano::bootstrap_service::run_one_blocking ()
|
|||
{
|
||||
return;
|
||||
}
|
||||
request_info (blocking, channel, query_source::blocking);
|
||||
request_info (blocking, channel, query_source::dependencies);
|
||||
}
|
||||
|
||||
void nano::bootstrap_service::run_dependencies ()
|
||||
|
|
@ -613,7 +613,7 @@ void nano::bootstrap_service::run_dependencies ()
|
|||
{
|
||||
lock.unlock ();
|
||||
stats.inc (nano::stat::type::bootstrap, nano::stat::detail::loop_dependencies);
|
||||
run_one_blocking ();
|
||||
run_one_dependency ();
|
||||
lock.lock ();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public: // Tag
|
|||
invalid,
|
||||
priority,
|
||||
database,
|
||||
blocking,
|
||||
dependencies,
|
||||
frontiers,
|
||||
};
|
||||
|
||||
|
|
@ -104,9 +104,9 @@ private:
|
|||
void run_database ();
|
||||
void run_one_database (bool should_throttle);
|
||||
void run_dependencies ();
|
||||
void run_one_blocking ();
|
||||
void run_one_frontier ();
|
||||
void run_one_dependency ();
|
||||
void run_frontiers ();
|
||||
void run_one_frontier ();
|
||||
void run_timeouts ();
|
||||
void cleanup_and_sync ();
|
||||
|
||||
|
|
@ -194,6 +194,7 @@ private:
|
|||
// Requests for accounts from database have much lower hitrate and could introduce strain on the network
|
||||
// A separate (lower) limiter ensures that we always reserve resources for querying accounts from priority queue
|
||||
nano::rate_limiter database_limiter;
|
||||
// Rate limiter for frontier requests
|
||||
nano::rate_limiter frontiers_limiter;
|
||||
|
||||
nano::interval sync_dependencies_interval;
|
||||
|
|
@ -205,7 +206,7 @@ private:
|
|||
std::thread database_thread;
|
||||
std::thread dependencies_thread;
|
||||
std::thread frontiers_thread;
|
||||
std::thread timeout_thread;
|
||||
std::thread cleanup_thread;
|
||||
|
||||
nano::thread_pool workers;
|
||||
nano::random_generator_mt rng;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue