From 55250f20b994f17a34a9044da134bf397a989cff Mon Sep 17 00:00:00 2001 From: Max Kalashnikoff Date: Wed, 7 Feb 2024 17:27:14 +0100 Subject: [PATCH] fix: removing unwraps from the WeightedIndex --- src/providers/mod.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/providers/mod.rs b/src/providers/mod.rs index 1eeb3d059..93def064a 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -20,7 +20,7 @@ use { hash::Hash, sync::Arc, }, - tracing::{info, log::warn}, + tracing::{error, info, log::warn}, wc::metrics::TaskMetrics, }; @@ -159,9 +159,18 @@ impl ProviderRepository { match WeightedIndex::new(weights) { Ok(dist) => { let random = dist.sample(&mut OsRng); - let provider = keys.get(random).unwrap(); - - Ok(self.providers.get(provider).cloned().unwrap()) + let provider = keys.get(random).ok_or_else(|| { + error!("Failed to get random provider for chain_id: {}", chain_id); + RpcError::UnsupportedChain(chain_id.to_string()) + })?; + + self.providers.get(provider).cloned().ok_or_else(|| { + error!( + "Provider not found during the weighted index check: {}", + provider + ); + RpcError::UnsupportedProvider(provider.to_string()) + }) } Err(e) => { // Respond with temporarily unavailable when all weights are 0 for