Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. 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.
  2. Wait for <connected> from a quorum of M’ (optional, see line 1 below)
  3. Submit a reconfig(M’) operation to leader(M)

...

  • operation reconfig(M’)
    1. If no quorum of M’ is connected or the connected quorum is too far behind M return failure
    2. If leader(M) is in M’: Designate , designate leader(M) to be the leader of M’Suspend processing further operations (until M’ is activated)
    3. 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
    4. Schedule the reconfiguration last in the queue of operations
      Phase 1:
    5. New operations (received by leader(M) during phase-1) will be sent to both M and M', s.t.:
      1. No commits are sent by leader(M) to members(M')
      2. 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
    6. send <reconfig-start, version(M), M’> to members(M)
    7. wait for <reconfig-start-ack> from quorum of members(M)
      Phase 2:
    8. Stop processing new operations, return failure for any further ops received
    9. send <activate-config, M’, leader(M’) > to members (M’)
    10. wait for <activate-config-ack> from quorum of members (M’)
      Phase 3:
    11. send <retire M> to members(M)

...