From 64ff5a4db412c7b861fc2abb0a822adbabc08e4f Mon Sep 17 00:00:00 2001 From: bgallois <benjamin@gallois.cc> Date: Wed, 9 Oct 2024 18:02:19 +0200 Subject: [PATCH] fix #255 --- client/distance/src/lib.rs | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/client/distance/src/lib.rs b/client/distance/src/lib.rs index 1b67e85fe..75f5d176f 100644 --- a/client/distance/src/lib.rs +++ b/client/distance/src/lib.rs @@ -40,21 +40,24 @@ where Backend: sc_client_api::Backend<B>, IdtyIndex: Decode + Encode + PartialEq + TypeInfo, { - let pool_index = client + let pool_index = if let Some(index) = client .storage( parent, &StorageKey( frame_support::storage::storage_prefix(b"Distance", b"CurrentPoolIndex").to_vec(), ), - ) - .expect("CurrentIndex is Err") - .map_or(0, |raw| { - u32::decode(&mut &raw.0[..]).expect("cannot decode CurrentIndex") - }); + )? + .map_or(None, |raw| u32::decode(&mut &raw.0[..]).ok()) + { + index + } else { + log::error!("🧙 [distance oracle] CurrentPoolIndex cannot be decoded"); + return Ok(sp_distance::InherentDataProvider::<IdtyIndex>::new(None)); + }; - let published_results = client + let published_results = if let Some(results) = client .storage( - parent, + B::Hash::default(), &StorageKey( frame_support::storage::storage_prefix( b"Distance", @@ -68,10 +71,14 @@ where .to_vec(), ), )? - .map_or_else(Default::default, |raw| { - pallet_distance::EvaluationPool::<AccountId32, IdtyIndex>::decode(&mut &raw.0[..]) - .expect("cannot decode EvaluationPool") - }); + .map_or(None, |raw| { + pallet_distance::EvaluationPool::<AccountId32, IdtyIndex>::decode(&mut &raw.0[..]).ok() + }) { + results + } else { + log::error!("🧙 [distance oracle] EvaluationPool cannot be decoded"); + return Ok(sp_distance::InherentDataProvider::<IdtyIndex>::new(None)); + }; // Have we already published a result for this period? // The block author is guaranteed to be in the owner_keys. -- GitLab