Skip to content
Snippets Groups Projects
Unverified Commit c03e36bf authored by bgallois's avatar bgallois
Browse files

fix #255

parent c521f5e1
No related branches found
No related tags found
No related merge requests found
...@@ -40,17 +40,22 @@ where ...@@ -40,17 +40,22 @@ where
Backend: sc_client_api::Backend<B>, Backend: sc_client_api::Backend<B>,
IdtyIndex: Decode + Encode + PartialEq + TypeInfo, IdtyIndex: Decode + Encode + PartialEq + TypeInfo,
{ {
let pool_index = client let pool_index = if let Some(index) = client
.storage( .storage(
parent, parent,
&StorageKey( &StorageKey(
frame_support::storage::storage_prefix(b"Distance", b"CurrentPoolIndex").to_vec(), frame_support::storage::storage_prefix(b"Distance", b"CurrentPoolIndex").to_vec(),
), ),
) )
.expect("CurrentIndex is Err") .ok()
.map_or(0, |raw| { .flatten()
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 = client
.storage( .storage(
...@@ -67,23 +72,25 @@ where ...@@ -67,23 +72,25 @@ where
) )
.to_vec(), .to_vec(),
), ),
)? )
.map_or_else(Default::default, |raw| { .ok()
pallet_distance::EvaluationPool::<AccountId32, IdtyIndex>::decode(&mut &raw.0[..]) .flatten()
.expect("cannot decode EvaluationPool") .map_or(None, |raw| {
pallet_distance::EvaluationPool::<AccountId32, IdtyIndex>::decode(&mut &raw.0[..]).ok()
}); });
// Have we already published a result for this period? // Have we already published a result for this period?
// The block author is guaranteed to be in the owner_keys. // The block author is guaranteed to be in the owner_keys.
let owner_keys = owner_keys if let Some(results) = published_results {
if owner_keys
.iter() .iter()
.map(|&key| sp_runtime::AccountId32::new(key.0)) .map(|&key| sp_runtime::AccountId32::new(key.0))
.any(|key| published_results.evaluators.contains(&key)); .any(|key| results.evaluators.contains(&key))
{
if owner_keys {
log::debug!("🧙 [distance oracle] Already published a result for this period"); log::debug!("🧙 [distance oracle] Already published a result for this period");
return Ok(sp_distance::InherentDataProvider::<IdtyIndex>::new(None)); return Ok(sp_distance::InherentDataProvider::<IdtyIndex>::new(None));
} }
}
// Read evaluation result from file, if it exists // Read evaluation result from file, if it exists
log::debug!( log::debug!(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment