Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Membership] Ignore stale silos when calculating vote count requirements #9307

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

ReubenBond
Copy link
Member

@ReubenBond ReubenBond commented Jan 29, 2025

'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:

  • NumVotesForDeathDeclaration: 2
  • 'Active' silos: 3
  • Stale silos: 2

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:

  • (active silos + 1) / 2
  • ClusterMembershipOptions.NumVotesForDeathDeclaration

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant