From 43c2d5f78839da6d42b9bac09b531007bdd6ffaf Mon Sep 17 00:00:00 2001 From: Joel Liu <83172559+csdtowards@users.noreply.github.com> Date: Sun, 8 Sep 2024 08:34:59 +0800 Subject: [PATCH] Add configuration which can force sync from start_block_number (#183) * queyr logs via LogQuery in wath loop --- node/log_entry_sync/src/sync_manager/config.rs | 4 ++++ node/log_entry_sync/src/sync_manager/mod.rs | 13 +++++++++++-- node/src/config/convert.rs | 1 + node/src/config/mod.rs | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/node/log_entry_sync/src/sync_manager/config.rs b/node/log_entry_sync/src/sync_manager/config.rs index 15d540c..d9d281f 100644 --- a/node/log_entry_sync/src/sync_manager/config.rs +++ b/node/log_entry_sync/src/sync_manager/config.rs @@ -32,6 +32,8 @@ pub struct LogSyncConfig { pub remove_finalized_block_interval_minutes: u64, // watch_loop (eth_getLogs) trigger interval pub watch_loop_wait_time_ms: u64, + // force to sync log from start block number + pub force_log_sync_from_start_block_number: bool, } #[derive(Clone)] @@ -58,6 +60,7 @@ impl LogSyncConfig { default_finalized_block_count: u64, remove_finalized_block_interval_minutes: u64, watch_loop_wait_time_ms: u64, + force_log_sync_from_start_block_number: bool, ) -> Self { Self { rpc_endpoint_url, @@ -73,6 +76,7 @@ impl LogSyncConfig { default_finalized_block_count, remove_finalized_block_interval_minutes, watch_loop_wait_time_ms, + force_log_sync_from_start_block_number, } } } diff --git a/node/log_entry_sync/src/sync_manager/mod.rs b/node/log_entry_sync/src/sync_manager/mod.rs index 48b59f8..0055fb4 100644 --- a/node/log_entry_sync/src/sync_manager/mod.rs +++ b/node/log_entry_sync/src/sync_manager/mod.rs @@ -5,7 +5,7 @@ use anyhow::{anyhow, bail, Result}; use ethereum_types::H256; use ethers::{prelude::Middleware, types::BlockNumber}; use futures::FutureExt; -use jsonrpsee::tracing::{debug, error, trace, warn}; +use jsonrpsee::tracing::{debug, error, warn}; use shared_types::{ChunkArray, Transaction}; use std::collections::BTreeMap; use std::fmt::Debug; @@ -305,7 +305,7 @@ impl LogSyncManager { }; while let Some(data) = rx.recv().await { - trace!("handle_data: data={:?}", data); + debug!("handle_data: data={:?}", data); match data { LogFetchProgress::SyncedBlock(( block_number, @@ -472,6 +472,15 @@ impl LogSyncManager { async fn get_start_block_number_with_hash( log_sync_manager: &LogSyncManager, ) -> Result<(u64, H256), anyhow::Error> { + if log_sync_manager + .config + .force_log_sync_from_start_block_number + { + let block_number = log_sync_manager.config.start_block_number; + let block_hash = log_sync_manager.get_block(block_number.into()).await?.1; + return Ok((block_number, block_hash)); + } + if let Some(block_number) = log_sync_manager.store.get_log_latest_block_number()? { if let Some(Some(val)) = log_sync_manager .block_hash_cache diff --git a/node/src/config/convert.rs b/node/src/config/convert.rs index 450fbd0..58c0152 100644 --- a/node/src/config/convert.rs +++ b/node/src/config/convert.rs @@ -156,6 +156,7 @@ impl ZgsConfig { self.default_finalized_block_count, self.remove_finalized_block_interval_minutes, self.watch_loop_wait_time_ms, + self.force_log_sync_from_start_block_number, )) } diff --git a/node/src/config/mod.rs b/node/src/config/mod.rs index 0896a0a..0373fca 100644 --- a/node/src/config/mod.rs +++ b/node/src/config/mod.rs @@ -33,6 +33,7 @@ build_config! { (blockchain_rpc_endpoint, (String), "http://127.0.0.1:8545".to_string()) (log_contract_address, (String), "".to_string()) (log_sync_start_block_number, (u64), 0) + (force_log_sync_from_start_block_number, (bool), false) (confirmation_block_count, (u64), 3) (log_page_size, (u64), 999) (max_cache_data_size, (usize), 100 * 1024 * 1024) // 100 MB