From 275c34de815066e44d8e197d2cb5f9e1ef4e04fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Sun, 12 Nov 2023 17:40:19 +0100 Subject: [PATCH] Avoid bootstrap notifications from live traffic --- nano/node/bootstrap_ascending/service.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/nano/node/bootstrap_ascending/service.cpp b/nano/node/bootstrap_ascending/service.cpp index 1ab1362849..b9a879a008 100644 --- a/nano/node/bootstrap_ascending/service.cpp +++ b/nano/node/bootstrap_ascending/service.cpp @@ -28,20 +28,26 @@ nano::bootstrap_ascending::service::service (nano::node_config & config_a, nano: scoring{ config.bootstrap_ascending, config.network_params.network }, 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) { + bool should_notify = false; { nano::lock_guard lock{ mutex }; - auto transaction = ledger.store.tx_begin_read (); for (auto const & [result, context] : batch) { - debug_assert (context.block != nullptr); - inspect (transaction, result, *context.block); + // 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); + should_notify = true; + } } } - - condition.notify_all (); + if (should_notify) + { + condition.notify_all (); + } }); }