From 8f60f7d75a28357d5d581bc8fb879ad07b700412 Mon Sep 17 00:00:00 2001 From: Roman Krasiuk Date: Fri, 17 Mar 2023 13:39:08 +0200 Subject: [PATCH] fix(cli): tip number lookup (#1808) --- bin/reth/src/node/mod.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/reth/src/node/mod.rs b/bin/reth/src/node/mod.rs index 4e784335f3..39aa20f7f9 100644 --- a/bin/reth/src/node/mod.rs +++ b/bin/reth/src/node/mod.rs @@ -37,7 +37,7 @@ use reth_network::{ error::NetworkError, FetchClient, NetworkConfig, NetworkHandle, NetworkManager, }; use reth_network_api::NetworkInfo; -use reth_primitives::{BlockHashOrNumber, ChainSpec, Head, SealedHeader, H256}; +use reth_primitives::{BlockHashOrNumber, ChainSpec, Head, Header, SealedHeader, H256}; use reth_provider::{BlockProvider, HeaderProvider, ShareableDatabase}; use reth_rpc_engine_api::{EngineApi, EngineApiHandle}; use reth_staged_sync::{ @@ -414,16 +414,16 @@ impl Command { fetch_client: FetchClient, tip: BlockHashOrNumber, ) -> Result { - let tip_num = match tip { - BlockHashOrNumber::Hash(hash) => { - info!(target: "reth::cli", ?hash, "Fetching tip block from the network."); - db.view(|tx| tx.get::(hash))??.unwrap() - } - BlockHashOrNumber::Number(number) => number, - }; + let header = db.view(|tx| -> Result, reth_db::Error> { + let number = match tip { + BlockHashOrNumber::Hash(hash) => tx.get::(hash)?, + BlockHashOrNumber::Number(number) => Some(number), + }; + Ok(number.map(|number| tx.get::(number)).transpose()?.flatten()) + })??; // try to look up the header in the database - if let Some(header) = db.view(|tx| tx.get::(tip_num))?? { + if let Some(header) = header { info!(target: "reth::cli", ?tip, "Successfully looked up tip block in the database"); return Ok(header.seal_slow()) }