Skip to content

Commit 1dcff3d

Browse files
authored
Avoid incomplete block import pipeline with full verifying import queue (#7050)
## Problem In the parachain template we use the [fully verifying import queue ](https://github.com/paritytech/polkadot-sdk/blob/3d9eddbeb262277c79f2b93b9efb5af95a3a35a8/cumulus/client/consensus/aura/src/equivocation_import_queue.rs#L224-L224) which does extra equivocation checks. However, when we import a warp synced block with state, we don't set a fork choice, leading to an incomplete block import pipeline and error here: https://github.com/paritytech/polkadot-sdk/blob/3d9eddbeb262277c79f2b93b9efb5af95a3a35a8/substrate/client/service/src/client/client.rs#L488-L488 This renders warp sync useless for chains using this import queue. ## Fix The fix is to always import a block with state as best block, as we already do in the normal Aura Verifier. In a follow up we should also take another look into unifying the usage of the different import queues. fixes paritytech/project-mythical#256 --------- Co-authored-by: command-bot <>
1 parent ffa90d0 commit 1dcff3d

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

cumulus/client/consensus/aura/src/equivocation_import_queue.rs

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ where
9797
// This is done for example when gap syncing and it is expected that the block after the gap
9898
// was checked/chosen properly, e.g. by warp syncing to this block using a finality proof.
9999
if block_params.state_action.skip_execution_checks() || block_params.with_state() {
100+
block_params.fork_choice = Some(ForkChoiceStrategy::Custom(block_params.with_state()));
100101
return Ok(block_params)
101102
}
102103

prdoc/pr_7050.prdoc

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
title: Avoid incomplete block import pipeline with full verifying import queue
2+
doc:
3+
- audience: Node Dev
4+
description: |-
5+
When warp syncing a node using the equivocation checking verifier, we now properly set the fork_choice rule.
6+
Affected are mostly nodes that are derived from the parachain template. Omni-node is not affected.
7+
8+
The prevents the error `ClientImport("Incomplete block import pipeline.")` after state sync.
9+
crates:
10+
- name: cumulus-client-consensus-aura
11+
bump: patch

0 commit comments

Comments
 (0)