FIX: Fixed instant removal validator stuck scenario #75
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The issue is that if 2 validators are put into
DeactivatingValidator
one marked for instant removal and the other for regular removal. The functioninstant_remove_validator
will not be able to run, halting the state machine for the epoch. This is becauseinstant_remove_validator
is checking to see that all validators are not inDeactivatingValidator
orReadyForRemoval
. However since the discovery that regular removals can also go directly toDeactivatingValidator
this check is no longer valid.The fix is to tally all of the deactivating StakeStatus across the validator list and assert that the count is equal to the regular removed validators, then we can safely assume all of the immediate to remove validators are already removed from the list.