Check origination time before starting election (#1446)

This commit is contained in:
Sergey Kroshnin 2019-01-07 19:23:00 +03:00 committed by Roy Keene
commit 424cb680e5
2 changed files with 6 additions and 6 deletions

View file

@ -1469,7 +1469,7 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
block_a->serialize_json (block);
BOOST_LOG (node.log) << boost::str (boost::format ("Processing block %1%: %2%") % hash.to_string () % block);
}
if (node.block_arrival.recent (hash))
if (origination != std::chrono::steady_clock::time_point () && node.block_arrival.recent (hash))
{
node.active.start (block_a);
if (node.config.enable_voting)
@ -1477,7 +1477,7 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
generator.add (hash);
}
}
queue_unchecked (transaction_a, hash);
queue_unchecked (transaction_a, hash, origination);
break;
}
case nano::process_result::gap_previous:
@ -1506,7 +1506,7 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
{
BOOST_LOG (node.log) << boost::str (boost::format ("Old for: %1%") % block_a->hash ().to_string ());
}
queue_unchecked (transaction_a, hash);
queue_unchecked (transaction_a, hash, origination);
node.active.update_difficulty (*block_a);
break;
}
@ -1580,13 +1580,13 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
return result;
}
void nano::block_processor::queue_unchecked (nano::transaction const & transaction_a, nano::block_hash const & hash_a)
void nano::block_processor::queue_unchecked (nano::transaction const & transaction_a, nano::block_hash const & hash_a, std::chrono::steady_clock::time_point origination)
{
auto cached (node.store.unchecked_get (transaction_a, hash_a));
for (auto i (cached.begin ()), n (cached.end ()); i != n; ++i)
{
node.store.unchecked_del (transaction_a, nano::unchecked_key (hash_a, (*i)->hash ()));
add (*i, std::chrono::steady_clock::time_point ());
add (*i, origination);
}
std::lock_guard<std::mutex> lock (node.gap_cache.mutex);
node.gap_cache.blocks.get<1> ().erase (hash_a);

View file

@ -428,7 +428,7 @@ public:
nano::process_return process_one (nano::transaction const &, std::shared_ptr<nano::block>, std::chrono::steady_clock::time_point = std::chrono::steady_clock::now (), bool = false);
private:
void queue_unchecked (nano::transaction const &, nano::block_hash const &);
void queue_unchecked (nano::transaction const &, nano::block_hash const &, std::chrono::steady_clock::time_point = std::chrono::steady_clock::time_point ());
void verify_state_blocks (std::unique_lock<std::mutex> &, size_t = std::numeric_limits<size_t>::max ());
void process_batch (std::unique_lock<std::mutex> &);
bool stopped;