提交 d9eba724 编写于 作者: B Bart Wyatt

temporary fixes for `get_blocks` test

上级 1cfad591
......@@ -1290,7 +1290,12 @@ void chain_controller::update_last_irreversible_block()
return a->last_confirmed_block_num < b->last_confirmed_block_num;
});
uint32_t new_last_irreversible_block_num = producer_objs[offset]->last_confirmed_block_num - 1;
uint32_t new_last_irreversible_block_num = producer_objs[offset]->last_confirmed_block_num;
// TODO: right now the code cannot handle the head block being irreversible for reasons that are purely
// implementation details. We can and should remove this special case once the rest of the logic is fixed.
if (producer_objs.size() == 1) {
new_last_irreversible_block_num -= 1;
}
if (new_last_irreversible_block_num > dpo.last_irreversible_block_num) {
......
......@@ -33,6 +33,7 @@ namespace eosio { namespace chain {
shared_producer_schedule_type& operator=( const producer_schedule_type& a ) {
version = a.version;
producers.clear();
producers.reserve( a.producers.size() );
for( const auto& p : a.producers )
producers.push_back(p);
......
......@@ -58,12 +58,17 @@ BOOST_AUTO_TEST_SUITE(database_tests)
}
// Utility function to check expected irreversible block
auto calc_exp_last_irr_block_num = [&](uint32_t head_block_num) {
auto calc_exp_last_irr_block_num = [&](uint32_t head_block_num) -> uint32_t {
const global_property_object &gpo = test.control->get_global_properties();
const auto producers_size = gpo.active_producers.producers.size();
const auto min_producers = EOS_PERCENT(producers_size, config::irreversible_threshold_percent);
return head_block_num - (((min_producers - 1) * config::producer_repititions) + 1 +
(head_block_num % config::producer_repititions));
const auto max_reversible_rounds = EOS_PERCENT(producers_size, config::percent_100 - config::irreversible_threshold_percent);
if( max_reversible_rounds == 0) {
return head_block_num - 1;
} else {
const auto current_round = head_block_num / config::producer_repititions;
const auto irreversible_round = current_round - max_reversible_rounds;
return (irreversible_round + 1) * config::producer_repititions - 1;
}
};
// Check the last irreversible block number is set correctly
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册