Check origination time before starting election (#1446)
This commit is contained in:
parent
3a0dcf7941
commit
424cb680e5
2 changed files with 6 additions and 6 deletions
|
|
@ -1469,7 +1469,7 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
|
||||||
block_a->serialize_json (block);
|
block_a->serialize_json (block);
|
||||||
BOOST_LOG (node.log) << boost::str (boost::format ("Processing block %1%: %2%") % hash.to_string () % 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);
|
node.active.start (block_a);
|
||||||
if (node.config.enable_voting)
|
if (node.config.enable_voting)
|
||||||
|
|
@ -1477,7 +1477,7 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
|
||||||
generator.add (hash);
|
generator.add (hash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue_unchecked (transaction_a, hash);
|
queue_unchecked (transaction_a, hash, origination);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case nano::process_result::gap_previous:
|
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 ());
|
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);
|
node.active.update_difficulty (*block_a);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1580,13 +1580,13 @@ nano::process_return nano::block_processor::process_one (nano::transaction const
|
||||||
return result;
|
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));
|
auto cached (node.store.unchecked_get (transaction_a, hash_a));
|
||||||
for (auto i (cached.begin ()), n (cached.end ()); i != n; ++i)
|
for (auto i (cached.begin ()), n (cached.end ()); i != n; ++i)
|
||||||
{
|
{
|
||||||
node.store.unchecked_del (transaction_a, nano::unchecked_key (hash_a, (*i)->hash ()));
|
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);
|
std::lock_guard<std::mutex> lock (node.gap_cache.mutex);
|
||||||
node.gap_cache.blocks.get<1> ().erase (hash_a);
|
node.gap_cache.blocks.get<1> ().erase (hash_a);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
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:
|
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 verify_state_blocks (std::unique_lock<std::mutex> &, size_t = std::numeric_limits<size_t>::max ());
|
||||||
void process_batch (std::unique_lock<std::mutex> &);
|
void process_batch (std::unique_lock<std::mutex> &);
|
||||||
bool stopped;
|
bool stopped;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue