fix: save last finalized block (#8473)

Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
This commit is contained in:
Federico Gimenez
2024-06-06 17:31:56 +02:00
committed by GitHub
parent 37f598ab94
commit a583defad7
14 changed files with 216 additions and 40 deletions

View File

@ -8,10 +8,10 @@ use reth_db_api::database::Database;
use reth_downloaders::{bodies::noop::NoopBodiesDownloader, headers::noop::NoopHeaderDownloader};
use reth_exex::ExExManagerHandle;
use reth_node_core::args::NetworkArgs;
use reth_primitives::{BlockHashOrNumber, PruneModes, B256};
use reth_primitives::{BlockHashOrNumber, BlockNumber, PruneModes, B256};
use reth_provider::{
BlockExecutionWriter, BlockNumReader, ChainSpecProvider, HeaderSyncMode, ProviderFactory,
StaticFileProviderFactory,
BlockExecutionWriter, BlockNumReader, ChainSpecProvider, FinalizedBlockReader,
FinalizedBlockWriter, HeaderSyncMode, ProviderFactory, StaticFileProviderFactory,
};
use reth_stages::{
sets::DefaultStages,
@ -75,6 +75,14 @@ impl Command {
.take_block_and_execution_range(range.clone())
.map_err(|err| eyre::eyre!("Transaction error on unwind: {err}"))?;
// update finalized block if needed
let last_saved_finalized_block_number = provider.last_finalized_block_number()?;
let range_min =
range.clone().min().ok_or(eyre::eyre!("Could not fetch lower range end"))?;
if range_min < last_saved_finalized_block_number {
provider.save_finalized_block_number(BlockNumber::from(range_min))?;
}
provider.commit()?;
}