Suppose an old configuration is A,B,C and the new one is C,D,E. An old majority A+B and a new majority D+E do not intersect. If each configuration can independently act as the whole cluster during a transition, two separate histories can be approved. Sharing one name C in the membership lists does not mean every pair of quorums shares C.
Raft’s joint-consensus transition requires separate majorities of both old and new configurations during the joint phase. A,B,D,E would satisfy it; A,B alone would not, nor would D,E alone. Once the joint configuration is committed, the protocol can move to the new configuration under its transition rules. Configuration entries themselves are replicated decisions. This is a conceptual account of the joint approach, not an instruction to hand-edit server configurations; implementations may expose different safe reconfiguration procedures.
Persist the replacement before discarding its history
Compaction changes the recovery material while the service is running. That creates a second atomicity problem beyond capturing a consistent application state. Suppose the old snapshot ends at 20 and the log covers 21 through 60. The service prepares a new snapshot through 50. If it deletes entries 21 through 50 before the replacement snapshot is durably available, a crash can leave the old snapshot and only entries 51 onward. There is then no way to reconstruct the transitions between 20 and 50 from those files. The lost material may include committed commands.
A safe design keeps the old recovery path until it has installed the new one under the storage system's durability rules. Conceptually, it writes a complete candidate snapshot, makes its contents durable, publishes metadata selecting that snapshot, and only then reclaims obsolete log data. Actual file-system and database operations differ, so this ordering is a requirement rather than a portable recipe involving one particular file operation. Recovery must be able to distinguish a completed installation from abandoned temporary bytes after a crash. A checksum can detect some corruption, but cannot prove that a snapshot contains the correct application prefix.
Snapshot transfer has the same distinction between arrival and installation. Imagine a follower receiving ten chunks. Nine complete chunks do not form a snapshot through index 50. The follower needs a way to identify the intended snapshot, assemble its pieces, check completeness, and install the result consistently. It must not advertise successful recovery merely because the final network request arrived. Nor may an old transfer overwrite a newer installed state without the protocol's boundary checks. Interrupted transfers and repeated chunks are expected recovery cases, not reasons to reinterpret partial state as complete.
Membership changes add a separate question about which servers can authorize the continuation. In the old configuration A,B,C, a majority needs two responses. In the new configuration C,D,E, a majority also needs two. The union contains five identities, but requiring any three of those five is not the joint rule. For example, A,B,D are three union members yet include only D from the new configuration. If that set alone could authorize a joint decision, the new configuration's required evidence would be missing. C's presence in both lists does not turn every three-member set into two majorities.
Before reading the table below, mark each responding identity once in the old list and once in the new list where applicable. Count C in both lists because it belongs to both, not because it sent two independent votes. The joint condition requires at least two old members and at least two new members. This arithmetic explains the table's acceptance condition. It does not specify the complete log rules for entering and leaving the joint phase. Those replicated configuration transitions must follow the chosen implementation's protocol, including its rules about when each configuration takes effect.