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