This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
Approval Voting loop does not handle 'pre-covered' no-shows correctly #3847
Labels
I3-bug
Fails to follow expected behavior.
We observed a situation on Rococo where a candidate had 6 assignments and 5 approvals, and all nodes saw it as unapproved indefinitely, with no further wakeups pending.
Needed-approvals: 4
Tranche-0 assignments: A, B, C, D
Tranche-1 assignments: E, F
All validators issued assignments at the same time and A no-showed. This lead to a technically approved state of 3 tranche-0 approvals and 1 tranche-0 no-show, which is covered by 2 tranche-1 approvals.
What I think happened is that we imported all assignments and then when A no-showed, it was immediately covered by the validators of tranche 1. There are two issues with this:
Both the wakeup state machine and approval-counting procedures need to be adjusted to account for this:
RequiredTranches
for waiting for new assignments after a no-show. We should have a new state that indicates that we've just encountered a no-show but all assignments covering it were received before we detected the no-show and therefore we should waitNO_SHOW_REACTION_TICKS ~= 3
before marking as approved.The text was updated successfully, but these errors were encountered: