From 213fa842866a57eaa21c46b25744291c4a804da2 Mon Sep 17 00:00:00 2001 From: Sergey Kroshnin Date: Mon, 14 Jan 2019 16:03:17 +0300 Subject: [PATCH] Disable process active with large queue (#1010) * Disable process active with large queue * Priority processor for local blocks * Block UDP while block_processor flush * Adjust values * Hold on bootstrap if flushing * Update rai::transaction * Disable process active with large queue I.e. for slow peers trying to bootstrap with huge UDP incoming traffic Also preventing node from segfault with queue overflow * restore permissions * Fix --- nano/node/node.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/nano/node/node.cpp b/nano/node/node.cpp index e3bb30d1..96a28535 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -500,7 +500,10 @@ public: } node.stats.inc (nano::stat::type::message, nano::stat::detail::publish, nano::stat::dir::in); node.peers.contacted (sender, message_a.header.version_using); - node.process_active (message_a.block); + if (!node.block_processor.full ()) + { + node.process_active (message_a.block); + } node.active.publish (message_a.block); } void confirm_req (nano::confirm_req const & message_a) override @@ -536,7 +539,10 @@ public: if (!vote_block.which ()) { auto block (boost::get> (vote_block)); - node.process_active (block); + if (!node.block_processor.full ()) + { + node.process_active (block); + } node.active.publish (block); } } @@ -1218,7 +1224,7 @@ void nano::block_processor::flush () bool nano::block_processor::full () { std::unique_lock lock (mutex); - return (blocks.size () + state_blocks.size ()) > 16384; + return (blocks.size () + state_blocks.size ()) > 65536; } void nano::block_processor::add (std::shared_ptr block_a, std::chrono::steady_clock::time_point origination)