Retry approval on availability failure if the check is still needed (#6807)
Recovering the POV can fail in situation where the node just restart and
the DHT topology wasn't fully discovered yet, so the current node can't
connect to most of its Peers. This is bad because for gossiping the
assignment you need to be connected to just a few peers, so because we
can't approve the candidate and other nodes will see this as a no show.
This becomes bad in the scenario where you've got a lot of nodes
restarting at the same time, so you end up having a lot of no-shows in
the network that are never covered, in that case it makes sense for
nodes to actually retry approving the candidate at a later data in time
and retry several times if the block containing the candidate wasn't
approved.
## TODO
- [x] Add a subsystem test.
---------
Signed-off-by: Alexandru Gheorghe <alexandru.gheorghe@parity.io>
Showing
- polkadot/node/core/approval-voting/src/lib.rs 130 additions, 7 deletionspolkadot/node/core/approval-voting/src/lib.rs
- polkadot/node/core/approval-voting/src/tests.rs 146 additions, 0 deletionspolkadot/node/core/approval-voting/src/tests.rs
- polkadot/node/subsystem-bench/src/lib/approval/mod.rs 2 additions, 0 deletionspolkadot/node/subsystem-bench/src/lib/approval/mod.rs
- prdoc/pr_6807.prdoc 19 additions, 0 deletionsprdoc/pr_6807.prdoc