From d03504fbfd4b1e67201c92ca40db6a87418b6c43 Mon Sep 17 00:00:00 2001 From: GroovieGermanikus Date: Fri, 2 Aug 2024 18:06:55 +0200 Subject: [PATCH] retry on RPC get_slot error --- src/slot_latency_tester.rs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/slot_latency_tester.rs b/src/slot_latency_tester.rs index 2a47da6..4ecfe10 100644 --- a/src/slot_latency_tester.rs +++ b/src/slot_latency_tester.rs @@ -60,7 +60,6 @@ async fn main() { tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO).init(); - // TODO add solana rpc let solana_rpc_url = format!("https://api.mainnet-beta.solana.com"); let solana_ws_url = format!("wss://api.mainnet-beta.solana.com"); let triton_ws_url = format!( @@ -121,17 +120,27 @@ async fn main() { } async fn rpc_getslot_source(rpc_url: Url, slot_source: SlotSource, mpsc_downstream: tokio::sync::mpsc::Sender) { - let rpc = RpcClient::new(rpc_url.to_string()); + let rpc = RpcClient::new_with_timeout(rpc_url.to_string(), Duration::from_secs(5)); loop { tokio::time::sleep(Duration::from_millis(800)).await; - let slot = rpc + let res = rpc .get_slot_with_commitment(CommitmentConfig::processed()) - .await - .unwrap(); - match mpsc_downstream.send(SlotDatapoint::new(slot_source.clone(), slot)).await { - Ok(_) => {} - Err(_) => return, + .await; + + match res { + Ok(slot) => { + match mpsc_downstream.send(SlotDatapoint::new(slot_source.clone(), slot)).await { + Ok(_) => {} + Err(_) => return, + } + } + Err(err) => { + println!("Error getting slot: {:?} - retry", err); + tokio::time::sleep(Duration::from_secs(1)).await; + } } + + } }