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:
Kevin Heifner
2023-03-03 08:49:48 -06:00
parent 6e7d98ea2c
commit a215b2cd12
7 changed files with 24 additions and 28 deletions
+10 -10
View File
@@ -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;
+2 -2
View File
@@ -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(),
+2 -2
View File
@@ -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) );
}
+3 -3
View File
@@ -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 );
}
}
+4 -5
View File
@@ -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 );
+3 -3
View File
@@ -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 );
}
}