The interview question. A Raft cluster has voting members A, B and C. You want to move to A, B, C, D and E while staying available. An operator suggests updating the config on all five servers and letting them converge. Another suggests adding D and E as voters immediately. Explain why changing the quorum definition is part of the consensus problem. Design a safe transition, distinguish joint consensus from one-member-at-a-time reconfiguration, and discuss learners, failure handling, and rollback.
Assume the starting three voters form a healthy majority and D and E are new empty nodes. We are changing who gets to decide the next committed history, so the transition must preserve agreement between the old and new voter sets.
Think first
Move a Raft cluster from voters A, B, C to A, B, C, D, E. A+B still use old membership, C+D+E use new membership. Why is that unsafe, how does joint consensus avoid it, and what would you do operationally before promoting empty new replicas?
Take a few minutes to form an approach, then compare it with the worked explanation.
Reveal the worked explanation
Two configurations can each believe they own a majority
Initially the majority of A, B and C is two. After the planned change, the majority of A, B, C, D and E is three.
Imagine A and B are still using the old rule. They can form an old majority. Meanwhile C, D and E are using the new rule. They can form a new majority. Those two winning sets share no node. If a reconfiguration allows both to make commitments as independent authorities, our earlier quorum-intersection safety argument has disappeared.
Notice the trap. Each side can truthfully say it has a majority under its own configuration. The danger comes from switching configurations at different moments without a protocol that prevents incompatible decisions.
Old and new voter configurations can have disjoint quorums, while joint consensus requires both old and new majorities
Adding servers is therefore not equivalent to scaling stateless API instances. The voter set is replicated state.
The joint-consensus route
The extended Raft paper describes a transition through an intermediate configuration called joint consensus. The cluster first moves from C_old to C_old,new, then from C_old,new to C_new.
During the joint phase, agreement requires a majority of the old configuration and a majority of the new configuration. Those are two conditions, not one majority of the combined union. For our example that means at least two of A, B, C and at least three of A, B, C, D, E. The same node may count toward both sets.
The requirement prevents either old-only or new-only voters from deciding alone. After a safe joint-phase commit, the protocol moves to the new configuration.
The implementation details matter. The original Raft paper describes joint consensus with configuration entries that take effect according to the protocol's append rules. You should not copy that explanation into a library with different membership-application semantics and assume every state transition matches. For example, etcd's Raft library supports configuration changes with its own documented rules and API.
Joint consensus is not a shared JSON configuration update.
One voter at a time is another legitimate approach
For this exact expansion, you can also add a single voting member at a time, using a Raft implementation whose membership protocol proves safety for such transitions.
The quorum arithmetic makes the intuition visible. Moving from three voters to four raises the majority requirement from two to three. Moving from four to five keeps majority at three. Under the required sequential protocol rules, adjacent configurations preserve the needed intersection.
The operation must still be logged and applied by the implementation. Concurrent changes and unresolved entries across terms need safe handling. The etcd Raft documentation explicitly discusses these conditions.
If both D and E are added at once without joint consensus, the transition skips the intermediate relationship that the one-member argument depends on.
Why I would introduce learners first
D and E start with empty logs. Making them count as voting members before they catch up can reduce availability. In a three-node cluster A, B, C, a direct expansion to five creates a majority threshold of three. If the new voters cannot participate, losing one old voter may prevent further commits.
A learner receives replicated state but does not count toward election or commit quorums. It can catch up using logs or snapshots while the old voters maintain the current decision boundary. The system promotes it only when the configured safety and readiness checks are satisfied.
etcd's operational documentation recommends adding learners first and then promoting them. That is one concrete implementation policy. A learner is still a load source: it can consume the leader's network and disk bandwidth during catch-up, so even non-voting additions should be paced.
Plan the move as an operation, not a command
I would check cluster health, exact voter identities, quorum placement, follower lag and free disk before changing membership. Next I would add D as a learner, wait for verified catch-up, safely promote it under the configured protocol, and repeat for E. The details depend on the deployed Raft system, but the invariant does not change: there must never be two configurations capable of committing incompatible histories.
During the change, preserve a trace of each committed membership state. Use the membership API, not node restarts with guessed bootstrap flags. Do not reuse old node identities. Handle failed learners through the supported membership API.
Rollback is not simply restoring the old file. Returning to three voters is another consensus membership change.
If a quorum has already been lost permanently, ordinary membership operations may no longer be possible. etcd's documentation treats disaster recovery separately and warns against force-removing failed members as a shortcut around consensus.
A strong Staff answer can explain the safe transition and operational failure cases. A Principal answer should additionally defend placement choices, recovery plans, upgrade compatibility and the team's ability to run the transition repeatedly without taking down the systems that depend on it.
The key lesson is that quorum is defined over a versioned membership, not over whichever machines are most convenient at the moment. Changing that membership must preserve the agreement history while authority transfers.
Go deeper
Two different uses of the word "two phase"
Joint consensus has two membership configurations in sequence. That is not the same mechanism as two-phase commit for database transactions. Neither concept should be used as a vague synonym for "do things carefully in two steps."
Learner safety versus learner performance
A learner still consumes leader resources. Bound concurrent catch-up to protect client latency.
Removal during a failure
Removing an unresponsive voter changes the quorum definition. It normally requires a functioning quorum under the current configuration to commit that removal. A minority cannot rewrite its own rules to call itself the majority.
Check your reasoning
Show how old majority A+B and new majority C+D+E can be disjoint.
Explain that joint consensus requires separate majorities in old and new configurations, not a union-wide majority.
Distinguish the paper’s joint-consensus approach from supported sequential single-voter changes.
Promote learners only after adequate catch-up, and account for leader workload and zone placement.
Treat rollback and failure recovery as new membership decisions, never unilateral config edits by a minority.
Common mistake: Assuming a cluster can safely switch its quorum denominator by editing config files or by adding two voters before they catch up.
Read the answer explanation
At least two old voters AND at least three new voters under the joint protocol. — The joint configuration requires independent majorities of the two voter sets, allowing overlapping members to count in both.
Apply it elsewhere
A distributed database moves its coordination quorum from one set of regions to another. What failure can arise if both topologies accept leadership under independent membership assumptions?
Compare your approach
Disjoint quorums can make incompatible authority decisions. Transition membership through an agreed configuration with overlapping quorum safety.
One more constraint
Why is removing a failed voter after losing the current quorum not a safe one-line operational shortcut?
Quick revision
Membership determines which quorum can commit. Switching from A B C to A B C D E through uncoordinated updates allows old majority A+B and new majority C+D+E to be disjoint. Joint consensus prevents this by requiring a majority of each configuration during transition. A supported sequential one-voter-at-a-time protocol is another route under its own restrictions. New nodes should generally catch up as non-voting learners before promotion. Rollback is another committed membership change, and a minority cannot simply edit its membership file to declare itself authoritative.