Skip to content

[raft][gate 2] Pool membership management #1719

Description

@MariemBaccari

Context

The DSS pool's membership is not static, participants join and leave over time. The raftstore currently only supports static membership. This issue outlines the implementation plan for dynamic membership.

Scope

  • Support adding and removing nodes in the consensus package using ProposeConfChange .
  • Prevent node ID reuse by tracking the list of removed node IDs and rejecting an addition that tries to reuse one.
  • Refuse to remove a voter if doing so would drop the pool below 3 voters.
  • Implement the dssctl tool to trigger membership changes (add / remove), issuing the three per-service proposals and reporting the result of each. The tool should also allow the user to select a single service (aux, rid, scd) for the membership change.
  • Document the procedure.

Out-of-Scope (tracked separately)

  • Learner status and promotion / demotion between learner and voter.
  • CAs and pool authentication

Expected result

  • A node can be added to and removed from all or a subset of the three Raft groups via dssctl with the CLI reporting all results.
  • Removing the current leader triggers an election.
  • Attempting to remove a voter below the 3-voter floor is rejected.
  • Attempting to re-add a node with a previously removed ID is rejected.
  • Procedure for membership management and cli usage is clearly documented.

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