THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 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 leader(M) to be leader(M’)
- Otherwise, designate the most up-to-date server in connected quorum of members(M’) M' to be leader(M’)
- 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)
...