From 70514a134fc7dc33f2eb1ad0eb041fceba148470 Mon Sep 17 00:00:00 2001 From: James Hiew Date: Fri, 9 Sep 2022 12:58:21 +0100 Subject: [PATCH 1/2] Make an attempt to rate limit the oracle --- apps/src/lib/node/ledger/ethereum_node/oracle.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/src/lib/node/ledger/ethereum_node/oracle.rs b/apps/src/lib/node/ledger/ethereum_node/oracle.rs index 28fd09ccb5f..7d6c50802ad 100644 --- a/apps/src/lib/node/ledger/ethereum_node/oracle.rs +++ b/apps/src/lib/node/ledger/ethereum_node/oracle.rs @@ -125,11 +125,21 @@ async fn run_oracle_aux(oracle: Oracle) { // 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; + 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 +149,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() { From fd9c4c09179cb33cc16651d17065179c621bb928 Mon Sep 17 00:00:00 2001 From: Tiago Carvalho Date: Fri, 23 Sep 2022 10:05:51 +0100 Subject: [PATCH 2/2] Remove mutable binding --- apps/src/lib/node/ledger/ethereum_node/oracle.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/src/lib/node/ledger/ethereum_node/oracle.rs b/apps/src/lib/node/ledger/ethereum_node/oracle.rs index 7d6c50802ad..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,12 @@ 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 { + let latest_block = loop { match oracle.eth_block_number().await { Ok(height) => break height, Err(error) => {