diff --git a/plugins/state_history_plugin/state_history_plugin.cpp b/plugins/state_history_plugin/state_history_plugin.cpp index 773b1a4b2d..ba0ae54ea6 100644 --- a/plugins/state_history_plugin/state_history_plugin.cpp +++ b/plugins/state_history_plugin/state_history_plugin.cpp @@ -206,7 +206,7 @@ struct state_history_plugin_impl : std::enable_shared_from_this(*block), block->block_num()); + store_chain_state(id, block->previous, block->block_num()); } catch (const fc::exception& e) { fc_elog(_log, "fc::exception: ${details}", ("details", e.to_detail_string())); // Both app().quit() and exception throwing are required. Without app().quit(), @@ -256,7 +256,7 @@ struct state_history_plugin_impl : std::enable_shared_from_thisempty(); @@ -265,7 +265,7 @@ struct state_history_plugin_impl : std::enable_shared_from_thispack_and_write_entry(header, block_header.previous, [this, fresh](auto&& buf) { + chain_state_log->pack_and_write_entry(header, previous_id, [this, fresh](auto&& buf) { pack_deltas(buf, chain_plug->chain().db(), fresh); }); } // store_chain_state @@ -406,11 +406,10 @@ void state_history_plugin_impl::plugin_startup() { try { const auto& chain = chain_plug->chain(); update_current(); - const auto& b = chain.head_block(); - const auto& id = chain.head_block_id(); - if( b && chain_state_log && chain_state_log->empty() ) { + uint32_t block_num = chain.head_block_num(); + if( block_num > 0 && chain_state_log && chain_state_log->empty() ) { fc_ilog( _log, "Storing initial state on startup, this can take a considerable amount of time" ); - store_chain_state( id, *b, b->block_num() ); + store_chain_state( chain.head_block_id(), chain.head_block_header().previous, block_num ); fc_ilog( _log, "Done storing initial state on startup" ); } first_available_block = chain.earliest_available_block_num();