Skip to content

[raft][gate 2] Limit the size of the voting set of nodes #1720

Description

@MariemBaccari

Context

The Raft library distinguishes voter nodes who count towards quorum from learners who receive and apply the log without voting. Our design uses learner status in the following ways:

  • Transient during a join: a node joining a pool starts as a learner to avoid widening the quorum before it can actually ack anything. When the node catches up, it can be promoted to a voter status.
  • Standing as a scalability measure: a node remains a learner and is never promoted to voter. This decouples the voting set from overall pool membership and mitigates the impact of a large pool's quorum size. We can therefore add nodes to the pool without growing the quorum.

Scope

  • A node is added as a learner by default
  • Define and implement the condition under which a learner is considered caught up and eligible for promotion
  • Promotion / demotion support (per-group)
  • dssctl must distinguish the cases defined above
  • Document the recommended workflow

Out-of-Scope

Expected result

  • A newly added node starts as a learner and is visible as such via a dssctl listing command
  • The pool defines and applies a concrete catch-up condition to know when a learner may be promoted
  • A node can be added as a standing learner that is never auto-promoted
  • A node can be promoted or demoted via dssctl
  • Procedure is clearly documented with the trade-offs of voter / learner statuses clearly outlined

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dss-raftRelating to the application-layer consensus implemenation based on raft

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions