diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 91244b1dc6..5ae55b3331 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -343,7 +343,8 @@ where P::ParachainContext: Send + 'static, ::ProduceCandidate: Send, { - match (config.expect_chain_spec().is_kusama(), config.roles) { + let is_kusama = config.expect_chain_spec().is_kusama(); + match (is_kusama, config.roles) { (_, Roles::LIGHT) => return Err( polkadot_service::Error::Other("light nodes are unsupported as collator".into()) ).into(), @@ -435,4 +436,32 @@ mod tests { )) } } + + struct BuildDummyParachainContext; + + impl BuildParachainContext for BuildDummyParachainContext { + type ParachainContext = DummyParachainContext; + + fn build( + self, + _: Arc>, + _: SP, + _: impl Network + Clone + 'static, + ) -> Result { + Ok(DummyParachainContext) + } + } + + // Make sure that the future returned by `start_collator` implementes `Send`. + #[test] + fn start_collator_is_send() { + fn check_send(_: T) {} + + check_send(start_collator( + BuildDummyParachainContext, + 0.into(), + Arc::new(CollatorPair::generate().0), + Default::default(), + )); + } }