GH-772 Simplify fork db head interface on controller. Fixes issue with net_plugin asking for a block that should be available but is not.
This commit is contained in:
@@ -3011,19 +3011,19 @@ block_state_ptr controller::head_block_state()const {
|
||||
}
|
||||
|
||||
uint32_t controller::fork_db_head_block_num()const {
|
||||
return my->fork_db.head()->block_num;
|
||||
if( my->read_mode == db_read_mode::IRREVERSIBLE ) {
|
||||
return my->fork_db.pending_head()->block_num;
|
||||
} else {
|
||||
return my->fork_db.head()->block_num;
|
||||
}
|
||||
}
|
||||
|
||||
block_id_type controller::fork_db_head_block_id()const {
|
||||
return my->fork_db.head()->id;
|
||||
}
|
||||
|
||||
uint32_t controller::fork_db_pending_head_block_num()const {
|
||||
return my->fork_db.pending_head()->block_num;
|
||||
}
|
||||
|
||||
block_id_type controller::fork_db_pending_head_block_id()const {
|
||||
return my->fork_db.pending_head()->id;
|
||||
if( my->read_mode == db_read_mode::IRREVERSIBLE ) {
|
||||
return my->fork_db.pending_head()->id;
|
||||
} else {
|
||||
return my->fork_db.head()->id;
|
||||
}
|
||||
}
|
||||
|
||||
time_point controller::pending_block_time()const {
|
||||
|
||||
@@ -222,9 +222,6 @@ namespace eosio { namespace chain {
|
||||
uint32_t fork_db_head_block_num()const;
|
||||
block_id_type fork_db_head_block_id()const;
|
||||
|
||||
uint32_t fork_db_pending_head_block_num()const;
|
||||
block_id_type fork_db_pending_head_block_id()const;
|
||||
|
||||
time_point pending_block_time()const;
|
||||
account_name pending_block_producer()const;
|
||||
const block_signing_authority& pending_block_signing_authority()const;
|
||||
|
||||
@@ -1281,8 +1281,8 @@ read_only::get_info_results read_only::get_info(const read_only::get_info_params
|
||||
//std::bitset<64>(db.get_dynamic_global_properties().recent_slots_filled).to_string(),
|
||||
//__builtin_popcountll(db.get_dynamic_global_properties().recent_slots_filled) / 64.0,
|
||||
app().version_string(),
|
||||
db.fork_db_pending_head_block_num(),
|
||||
db.fork_db_pending_head_block_id(),
|
||||
db.fork_db_head_block_num(),
|
||||
db.fork_db_head_block_id(),
|
||||
app().full_version_string(),
|
||||
rm.get_total_cpu_weight(),
|
||||
rm.get_total_net_weight(),
|
||||
|
||||
@@ -2728,8 +2728,8 @@ namespace eosio {
|
||||
chain_lib_id = cc.last_irreversible_block_id();
|
||||
chain_head_blk_num = cc.head_block_num();
|
||||
chain_head_blk_id = cc.head_block_id();
|
||||
chain_fork_head_blk_num = cc.fork_db_pending_head_block_num();
|
||||
chain_fork_head_blk_id = cc.fork_db_pending_head_block_id();
|
||||
chain_fork_head_blk_num = cc.fork_db_head_block_num();
|
||||
chain_fork_head_blk_id = cc.fork_db_head_block_id();
|
||||
fc_dlog( logger, "updating chain info lib ${lib}, head ${head}, fork ${fork}",
|
||||
("lib", chain_lib_num)("head", chain_head_blk_num)("fork", chain_fork_head_blk_num) );
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@ public_key_type get_public_key( name keyname, string role ){
|
||||
}
|
||||
|
||||
void push_blocks( tester& from, tester& to, uint32_t block_num_limit ) {
|
||||
while( to.control->fork_db_pending_head_block_num()
|
||||
< std::min( from.control->fork_db_pending_head_block_num(), block_num_limit ) )
|
||||
while( to.control->fork_db_head_block_num()
|
||||
< std::min( from.control->fork_db_head_block_num(), block_num_limit ) )
|
||||
{
|
||||
auto fb = from.control->fetch_block_by_number( to.control->fork_db_pending_head_block_num()+1 );
|
||||
auto fb = from.control->fetch_block_by_number( to.control->fork_db_head_block_num()+1 );
|
||||
to.push_block( fb );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,8 +395,7 @@ BOOST_AUTO_TEST_CASE( read_modes ) try {
|
||||
|
||||
tester irreversible(setup_policy::none, db_read_mode::IRREVERSIBLE);
|
||||
push_blocks(c, irreversible);
|
||||
BOOST_CHECK_EQUAL(head_block_num, irreversible.control->fork_db_pending_head_block_num());
|
||||
BOOST_CHECK_EQUAL(last_irreversible_block_num, irreversible.control->fork_db_head_block_num());
|
||||
BOOST_CHECK_EQUAL(head_block_num, irreversible.control->fork_db_head_block_num());
|
||||
BOOST_CHECK_EQUAL(last_irreversible_block_num, irreversible.control->head_block_num());
|
||||
|
||||
} FC_LOG_AND_RETHROW()
|
||||
@@ -471,13 +470,13 @@ BOOST_AUTO_TEST_CASE( irreversible_mode ) try {
|
||||
|
||||
push_blocks( main, irreversible, hbn1 );
|
||||
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_pending_head_block_num(), hbn1 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_head_block_num(), hbn1 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->head_block_num(), lib1 );
|
||||
BOOST_CHECK_EQUAL( does_account_exist( irreversible, "alice"_n ), false );
|
||||
|
||||
push_blocks( other, irreversible, hbn4 );
|
||||
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_pending_head_block_num(), hbn4 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_head_block_num(), hbn4 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->head_block_num(), lib4 );
|
||||
BOOST_CHECK_EQUAL( does_account_exist( irreversible, "alice"_n ), false );
|
||||
|
||||
@@ -487,7 +486,7 @@ BOOST_AUTO_TEST_CASE( irreversible_mode ) try {
|
||||
irreversible.push_block( fb );
|
||||
}
|
||||
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_pending_head_block_num(), hbn3 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->fork_db_head_block_num(), hbn3 );
|
||||
BOOST_CHECK_EQUAL( irreversible.control->head_block_num(), lib3 );
|
||||
BOOST_CHECK_EQUAL( does_account_exist( irreversible, "alice"_n ), true );
|
||||
|
||||
|
||||
@@ -742,10 +742,10 @@ BOOST_AUTO_TEST_CASE(test_splitted_log) {
|
||||
}
|
||||
|
||||
void push_blocks( tester& from, tester& to ) {
|
||||
while( to.control->fork_db_pending_head_block_num()
|
||||
< from.control->fork_db_pending_head_block_num() )
|
||||
while( to.control->fork_db_head_block_num()
|
||||
< from.control->fork_db_head_block_num() )
|
||||
{
|
||||
auto fb = from.control->fetch_block_by_number( to.control->fork_db_pending_head_block_num()+1 );
|
||||
auto fb = from.control->fetch_block_by_number( to.control->fork_db_head_block_num()+1 );
|
||||
to.push_block( fb );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user