[Membership] Ignore stale silos when calculating vote count requirements #9307
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.
'Stale' silos are likely dead, since they have not updated their
IAmAliveTime
entry in the table recently. If these silos are counted towards the voting requirement, then the cluster may enter a stalemate scenario, where active silos are not able to evict inactive silos since they would require a vote from at least one of the inactive silos.Consider this case:
In this case, the only active non-stale silo will not be able to evict the stale silos in the cluster, since it would need 2 votes to evict. Orleans calculates the voting requirement as the minimum of:
In this case, the voting requirement would be 2, since (3 + 1) / 2 = 2.
This PR changes voting requirements to exclude stale silos, reducing the requirement to 1 in our case (
(3 - 2 + 1) / 2 = 1
), allowing the active silo to evict the stale silos.Microsoft Reviewers: Open in CodeFlow