Only do slow replays when the bookie plugin is loaded
This commit is contained in:
parent
ed0917ee03
commit
69b00293d9
3 changed files with 36 additions and 12 deletions
|
|
@ -64,13 +64,16 @@ void database::reindex(fc::path data_dir, const genesis_state_type& initial_allo
|
||||||
const auto last_block_num = last_block->block_num();
|
const auto last_block_num = last_block->block_num();
|
||||||
|
|
||||||
ilog( "Replaying blocks..." );
|
ilog( "Replaying blocks..." );
|
||||||
// Right now, we leave undo_db enabled when replaying because the bookie plugin
|
// Right now, we leave undo_db enabled when replaying when the bookie plugin is
|
||||||
// depends on new/changed/removed object notifications, and those are only fired
|
// enabled. It depends on new/changed/removed object notifications, and those are
|
||||||
// when the undo_db is enabled
|
// only fired when the undo_db is enabled
|
||||||
//_undo_db.disable();
|
if (!_slow_replays)
|
||||||
|
_undo_db.disable();
|
||||||
for( uint32_t i = 1; i <= last_block_num; ++i )
|
for( uint32_t i = 1; i <= last_block_num; ++i )
|
||||||
{
|
{
|
||||||
if( i % 10000 == 0 ) std::cerr << " " << double(i*100)/last_block_num << "% "<<i << " of " <<last_block_num<<" \n";
|
if( i == 1 ||
|
||||||
|
i % 10000 == 0 )
|
||||||
|
std::cerr << " " << double(i*100)/last_block_num << "% "<< i << " of " <<last_block_num<<" \n";
|
||||||
fc::optional< signed_block > block = _block_id_to_block.fetch_by_number(i);
|
fc::optional< signed_block > block = _block_id_to_block.fetch_by_number(i);
|
||||||
if( !block.valid() )
|
if( !block.valid() )
|
||||||
{
|
{
|
||||||
|
|
@ -91,14 +94,24 @@ void database::reindex(fc::path data_dir, const genesis_state_type& initial_allo
|
||||||
wlog( "Dropped ${n} blocks from after the gap", ("n", dropped_count) );
|
wlog( "Dropped ${n} blocks from after the gap", ("n", dropped_count) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
apply_block(*block, skip_witness_signature |
|
if (_slow_replays)
|
||||||
skip_transaction_signatures |
|
push_block(*block, skip_fork_db |
|
||||||
skip_transaction_dupe_check |
|
skip_witness_signature |
|
||||||
skip_tapos_check |
|
skip_transaction_signatures |
|
||||||
skip_witness_schedule_check |
|
skip_transaction_dupe_check |
|
||||||
skip_authority_check);
|
skip_tapos_check |
|
||||||
|
skip_witness_schedule_check |
|
||||||
|
skip_authority_check);
|
||||||
|
else
|
||||||
|
apply_block(*block, skip_witness_signature |
|
||||||
|
skip_transaction_signatures |
|
||||||
|
skip_transaction_dupe_check |
|
||||||
|
skip_tapos_check |
|
||||||
|
skip_witness_schedule_check |
|
||||||
|
skip_authority_check);
|
||||||
}
|
}
|
||||||
//_undo_db.enable();
|
if (!_slow_replays)
|
||||||
|
_undo_db.enable();
|
||||||
auto end = fc::time_point::now();
|
auto end = fc::time_point::now();
|
||||||
ilog( "Done reindexing, elapsed time: ${t} sec", ("t",double((end-start).count())/1000000.0 ) );
|
ilog( "Done reindexing, elapsed time: ${t} sec", ("t",double((end-start).count())/1000000.0 ) );
|
||||||
} FC_CAPTURE_AND_RETHROW( (data_dir) ) }
|
} FC_CAPTURE_AND_RETHROW( (data_dir) ) }
|
||||||
|
|
@ -189,4 +202,10 @@ void database::close(bool rewind)
|
||||||
_fork_db.reset();
|
_fork_db.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void database::force_slow_replays()
|
||||||
|
{
|
||||||
|
ilog("enabling slow replays");
|
||||||
|
_slow_replays = true;
|
||||||
|
}
|
||||||
|
|
||||||
} }
|
} }
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,9 @@ namespace graphene { namespace chain {
|
||||||
// history object so other plugins that evaluate later can reference it.
|
// history object so other plugins that evaluate later can reference it.
|
||||||
vector<optional< operation_history_object > >& get_applied_operations();
|
vector<optional< operation_history_object > >& get_applied_operations();
|
||||||
|
|
||||||
|
// the bookie plugin depends on change notifications that are skipped during normal replays
|
||||||
|
void force_slow_replays();
|
||||||
|
|
||||||
string to_pretty_string( const asset& a )const;
|
string to_pretty_string( const asset& a )const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -534,6 +537,7 @@ namespace graphene { namespace chain {
|
||||||
|
|
||||||
node_property_object _node_property_object;
|
node_property_object _node_property_object;
|
||||||
fc::hash_ctr_rng<secret_hash_type, 20> _random_number_generator;
|
fc::hash_ctr_rng<secret_hash_type, 20> _random_number_generator;
|
||||||
|
bool _slow_replays = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
|
|
|
||||||
|
|
@ -453,6 +453,7 @@ void bookie_plugin::plugin_set_program_options(boost::program_options::options_d
|
||||||
void bookie_plugin::plugin_initialize(const boost::program_options::variables_map& options)
|
void bookie_plugin::plugin_initialize(const boost::program_options::variables_map& options)
|
||||||
{
|
{
|
||||||
ilog("bookie plugin: plugin_startup() begin");
|
ilog("bookie plugin: plugin_startup() begin");
|
||||||
|
database().force_slow_replays();
|
||||||
database().applied_block.connect( [&]( const signed_block& b){ my->on_block_applied(b); } );
|
database().applied_block.connect( [&]( const signed_block& b){ my->on_block_applied(b); } );
|
||||||
database().changed_objects.connect([&](const vector<object_id_type>& changed_object_ids, const fc::flat_set<graphene::chain::account_id_type>& impacted_accounts){ my->on_objects_changed(changed_object_ids); });
|
database().changed_objects.connect([&](const vector<object_id_type>& changed_object_ids, const fc::flat_set<graphene::chain::account_id_type>& impacted_accounts){ my->on_objects_changed(changed_object_ids); });
|
||||||
database().new_objects.connect([this](const vector<object_id_type>& ids, const flat_set<account_id_type>& impacted_accounts) { my->on_objects_new(ids); });
|
database().new_objects.connect([this](const vector<object_id_type>& ids, const flat_set<account_id_type>& impacted_accounts) { my->on_objects_new(ids); });
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue