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