Do not crash on block gap in `displaced_leaves_after_finalizing` (#4997)
After the merge of #4922 we saw failing zombienet tests with the
following error:
```
2024-07-09 10:30:09 Error applying finality to block (0xb9e1d3d9cb2047fe61667e28a0963e0634a7b29781895bc9ca40c898027b4c09, 56685): UnknownBlock: Header was not found in the database: 0x0000000000000000000000000000000000000000000000000000000000000000
2024-07-09 10:30:09 GRANDPA voter error: could not complete a round on disk: UnknownBlock: Header was not found in the database: 0x0000000000000000000000000000000000000000000000000000000000000000
```
[Example](https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/6662262)
The crashing situation is warp-sync related. After warp syncing, it can
happen that there are gaps in block ancestry where we don't have the
header. At the same time, the genesis hash is in the set of leaves. In
`displaced_leaves_after_finalizing` we then iterate from the finalized
block backwards until we hit an unknown block, crashing the node.
This PR makes the detection of displaced branches resilient against
unknown block in the finalized block chain.
cc @nazar-pc (github won't let me request a review from you)
---------
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: command-bot <>
parent
73995199
Pipeline
#485386
waiting for manual action
with stages
in
1 hour, 24 minutes, and 5 seconds
Please register or sign in to comment