Fix fetch_candidates (#330)

fix the following error in the log:
Could not extract candidates from block body of imported block ...
This commit is contained in:
Yuanchao Sun
2019-07-23 17:11:50 +08:00
committed by Robert Habermeier
parent f1fdb0cb83
commit 2af72cef83
+13 -9
View File
@@ -54,15 +54,19 @@ pub(crate) fn fetch_candidates<P: BlockBody<Block>>(client: &P, block: &BlockId)
use polkadot_runtime::{Call, ParachainsCall, UncheckedExtrinsic as RuntimeExtrinsic}; use polkadot_runtime::{Call, ParachainsCall, UncheckedExtrinsic as RuntimeExtrinsic};
let extrinsics = client.block_body(block)?; let extrinsics = client.block_body(block)?;
Ok(extrinsics Ok(match extrinsics {
.into_iter() Some(extrinsics) => extrinsics
.filter_map(|ex| RuntimeExtrinsic::decode(&mut ex.encode().as_slice())) .into_iter()
.filter_map(|ex| match ex.function { .filter_map(|ex| RuntimeExtrinsic::decode(&mut ex.encode().as_slice()))
Call::Parachains(ParachainsCall::set_heads(heads)) => .filter_map(|ex| match ex.function {
Some(heads.into_iter().map(|c| c.candidate)), Call::Parachains(ParachainsCall::set_heads(heads)) => {
_ => None, Some(heads.into_iter().map(|c| c.candidate))
}) }
.next()) _ => None,
})
.next(),
None => None,
})
} }
// creates a task to prune redundant entries in availability store upon block finalization // creates a task to prune redundant entries in availability store upon block finalization