Updating election fields inside election class.

This commit is contained in:
clemahieu 2020-01-30 15:16:55 +00:00
commit c0a09fa0e9
No known key found for this signature in database
GPG key ID: 43708520C8DFB938
2 changed files with 9 additions and 7 deletions

View file

@ -632,14 +632,10 @@ void nano::active_transactions::update_difficulty (std::shared_ptr<nano::block>
{
node.logger.try_log (boost::str (boost::format ("Block %1% was updated from difficulty %2% to %3%") % block_a->hash ().to_string () % nano::to_string_hex (existing_election->difficulty) % nano::to_string_hex (difficulty)));
}
roots.get<tag_root> ().modify (existing_election, [&block_a, difficulty](nano::conflict_info & info_a) {
roots.get<tag_root> ().modify (existing_election, [difficulty](nano::conflict_info & info_a) {
info_a.difficulty = difficulty;
info_a.election->blocks[block_a->hash ()] = block_a;
if (info_a.election->status.winner->hash () == block_a->hash ())
{
info_a.election->status.winner = block_a;
}
});
existing_election->election->publish (block_a);
adjust_difficulty (block_a->hash ());
}
}

View file

@ -211,7 +211,8 @@ bool nano::election::publish (std::shared_ptr<nano::block> block_a)
}
if (!result)
{
if (blocks.find (block_a->hash ()) == blocks.end ())
auto existing = blocks.find (block_a->hash ());
if (existing == blocks.end ())
{
blocks.emplace (std::make_pair (block_a->hash (), block_a));
insert_inactive_votes_cache (block_a->hash ());
@ -221,6 +222,11 @@ bool nano::election::publish (std::shared_ptr<nano::block> block_a)
else
{
result = true;
existing->second = block_a;
if (status.winner->hash () == block_a->hash ())
{
status.winner = block_a;
}
}
}
return result;