From a1d216040e3b62637aca3c1f78e159e91fda97c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Hodul=C3=A1k?= Date: Mon, 16 Jun 2025 11:52:00 +0200 Subject: [PATCH] perf(cli): Start from next block based on imported headers in `import-era` command (#16803) --- crates/cli/commands/src/import_era.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/cli/commands/src/import_era.rs b/crates/cli/commands/src/import_era.rs index 7d25ce6a83..7920fda313 100644 --- a/crates/cli/commands/src/import_era.rs +++ b/crates/cli/commands/src/import_era.rs @@ -11,6 +11,8 @@ use reth_era_utils as era; use reth_etl::Collector; use reth_fs_util as fs; use reth_node_core::version::SHORT_VERSION; +use reth_provider::StaticFileProviderFactory; +use reth_static_file_types::StaticFileSegment; use std::{path::PathBuf, sync::Arc}; use tracing::info; @@ -72,8 +74,14 @@ impl> ImportEraC let mut hash_collector = Collector::new(config.stages.etl.file_size, config.stages.etl.dir); + let next_block = provider_factory + .static_file_provider() + .get_highest_static_file_block(StaticFileSegment::Headers) + .unwrap_or_default() + + 1; + if let Some(path) = self.import.path { - let stream = read_dir(path, 0)?; + let stream = read_dir(path, next_block)?; era::import(stream, &provider_factory, &mut hash_collector)?; } else { @@ -86,8 +94,9 @@ impl> ImportEraC fs::create_dir_all(&folder)?; + let config = EraStreamConfig::default().start_from(next_block); let client = EraClient::new(Client::new(), url, folder); - let stream = EraStream::new(client, EraStreamConfig::default()); + let stream = EraStream::new(client, config); era::import(stream, &provider_factory, &mut hash_collector)?; }