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
This commit is contained in:
Sergey Kroshnin 2019-01-14 16:03:17 +03:00 committed by Zach Hyatt
commit 213fa84286

View file

@ -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<std::shared_ptr<nano::block>> (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<std::mutex> lock (mutex);
return (blocks.size () + state_blocks.size ()) > 16384;
return (blocks.size () + state_blocks.size ()) > 65536;
}
void nano::block_processor::add (std::shared_ptr<nano::block> block_a, std::chrono::steady_clock::time_point origination)