diff --git a/client/consensus/relay-chain/src/import_queue.rs b/client/consensus/relay-chain/src/import_queue.rs index 31004c0005e..d77ffdd3e3e 100644 --- a/client/consensus/relay-chain/src/import_queue.rs +++ b/client/consensus/relay-chain/src/import_queue.rs @@ -58,6 +58,14 @@ where &mut self, mut block_params: BlockImportParams, ) -> Result<(BlockImportParams, Option)>>), String> { + // Skip checks that include execution, if being told so, or when importing only state. + // + // This is done for example when gap syncing and it is expected that the block after the gap + // was checked/chosen properly, e.g. by warp syncing to this block using a finality proof. + if block_params.state_action.skip_execution_checks() || block_params.with_state() { + return Ok((block_params, Default::default())) + } + if let Some(inner_body) = block_params.body.take() { let inherent_data_providers = self .create_inherent_data_providers