diff --git a/apps/src/lib/node/ledger/ethereum_node/oracle.rs b/apps/src/lib/node/ledger/ethereum_node/oracle.rs index 28fd09ccb5f..32b2504c03e 100644 --- a/apps/src/lib/node/ledger/ethereum_node/oracle.rs +++ b/apps/src/lib/node/ledger/ethereum_node/oracle.rs @@ -123,13 +123,22 @@ async fn run_oracle_aux(oracle: Oracle) { // Initialize our local state. This includes // the latest block height seen and a queue of events // awaiting a certain number of confirmations - let mut latest_block; let mut pending: Vec = Vec::new(); + const SLEEP_DUR: std::time::Duration = std::time::Duration::from_secs(1); loop { + tokio::time::sleep(SLEEP_DUR).await; // update the latest block height - latest_block = loop { - if let Ok(height) = oracle.eth_block_number().await { - break height; + let latest_block = loop { + match oracle.eth_block_number().await { + Ok(height) => break height, + Err(error) => { + tracing::warn!( + ?error, + "Couldn't get the latest Ethereum block height, will \ + keep trying" + ); + tokio::time::sleep(SLEEP_DUR).await; + } } if !oracle.connected() { tracing::info!( @@ -139,6 +148,7 @@ async fn run_oracle_aux(oracle: Oracle) { return; } }; + tracing::debug!(?latest_block, "Got latest Ethereum block height"); // No blocks in existence yet with enough confirmations if Uint256::from(MIN_CONFIRMATIONS) > latest_block { if !oracle.connected() {