From bde5072da0a1814e68330a9cb5f62d2ed9655435 Mon Sep 17 00:00:00 2001 From: SergiySW Date: Sun, 23 Sep 2018 23:33:24 +0300 Subject: [PATCH] Start elections for processed blocks after transaction commit (#1219) --- rai/node/node.cpp | 11 +++++++++-- rai/node/node.hpp | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rai/node/node.cpp b/rai/node/node.cpp index 6e21a7de..667d8f03 100644 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -1574,6 +1574,13 @@ void rai::block_processor::process_receive_many (std::unique_lock & ++count; } } + // Start elections for recent blocks + while (!processed_active.empty ()) + { + auto block (processed_active.front ()); + processed_active.pop_front (); + node.active.start (block); + } lock_a.unlock (); } @@ -1594,7 +1601,7 @@ rai::process_return rai::block_processor::process_receive_one (rai::transaction } if (node.block_arrival.recent (hash)) { - node.active.start (block_a); + processed_active.push_back (block_a); } queue_unchecked (transaction_a, hash); break; @@ -3882,7 +3889,7 @@ void rai::active_transactions::announce_votes () node.network.republish_block (transaction, election_l->status.winner); } } - else if (i->announcements > 3) + else { election_l->abort (); } diff --git a/rai/node/node.hpp b/rai/node/node.hpp index 49f8ae7b..0116e68c 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -625,6 +625,7 @@ private: std::deque, std::chrono::steady_clock::time_point>> blocks; std::unordered_set blocks_hashes; std::deque> forced; + std::deque> processed_active; std::condition_variable condition; rai::node & node; std::mutex mutex;