THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- Send a message to all members(M’) instructing them to connect to leader(M) as followers.
- Followers learn about operations as they are proposed (not upon commit) and do not participate in leader election.
- Wait for <connected> from a quorum of M’ (optional, see line 1 below)
- Submit a reconfig(M’) operation to leader(M)
...
- operation reconfig(M’)
- If no quorum of M’ is connected or the connected quorum is too far behind M return failure
- If leader(M) is in M’: Designate , designate leader(M) to be the leader of M’Suspend processing further operations (until M’ is activated)
- Otherwise: Designate , designate the most up-to-date server in connected quorum of members(M’) to be leader(M’)Stop processing new operations, return failure for any further ops received
- Schedule the reconfiguration last in the queue of operations
Phase 1: - New operations (received by leader(M) during phase-1) will be sent to both M and M', s.t.:
- No commits are sent by leader(M) to members(M')
- Client submitting the operation can be acked as soon as either of the following happens:
- a quorum of members(M) acks the operation
- phase-2 completes
- send <reconfig-start, version(M), M’> to members(M)
- wait for <reconfig-start-ack> from quorum of members(M)
Phase 2: - Stop processing new operations, return failure for any further ops received
- send <activate-config, M’, leader(M’) > to members (M’)
- wait for <activate-config-ack> from quorum of members (M’)
Phase 3: - send <retire M> to members(M)
...