Versions Compared

Key

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

...

  1. A master keeps status of all unacknowledged RPCs in an object of UnackedRpcResults <Client id, List<rpc_id, result>> (See figure 1)
  2. As a new RPC comes in, the master checks whether duplicate RPC is in progress or completed by referring UnackedRpcResult. If the RPC is already completed before, just reply client with saved result. If it is in progress, reply with status code "RETRY". If it is neither in progress or completed, the master process the RPC as normal.
  3. As an alternation RPC is processed by writing a new object value on log, master also write <client<client_id, rpc_id, ack_id> id> associated with the modification. Master atomically writes both the original log entry (contains object value) and new type of log entry (which contains client_id, rpc_id and , ack_id, and other metadata. See figure 2.), so that we can guarantee consistency after crash & recovery.

...