Avoid bootstrap notifications from live traffic (#4463)

This commit is contained in:
Piotr Wójcik 2024-06-27 20:29:34 +02:00 committed by GitHub
commit ebbc881ebb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -31,20 +31,27 @@ nano::bootstrap_ascending::service::service (nano::node_config & config_a, nano:
scoring{ config.bootstrap_ascending, config.network_params.network }, scoring{ config.bootstrap_ascending, config.network_params.network },
database_limiter{ config.bootstrap_ascending.database_requests_limit, 1.0 } database_limiter{ config.bootstrap_ascending.database_requests_limit, 1.0 }
{ {
// TODO: This is called from a very congested blockprocessor thread. Offload this work to a dedicated processing thread
block_processor.batch_processed.add ([this] (auto const & batch) { block_processor.batch_processed.add ([this] (auto const & batch) {
bool should_notify = false;
{ {
nano::lock_guard<nano::mutex> lock{ mutex }; nano::lock_guard<nano::mutex> lock{ mutex };
auto transaction = ledger.tx_begin_read (); auto transaction = ledger.tx_begin_read ();
for (auto const & [result, context] : batch) for (auto const & [result, context] : batch)
{ {
debug_assert (context.block != nullptr); // Do not try to unnecessarily bootstrap live traffic chains
if (context.source == nano::block_source::bootstrap)
{
release_assert (context.block != nullptr);
inspect (transaction, result, *context.block); inspect (transaction, result, *context.block);
should_notify = true;
} }
} }
}
if (should_notify)
{
condition.notify_all (); condition.notify_all ();
}
}); });
} }