Skip to content

Latest commit

 

History

History
 
 

protocol-base

@fluidframework/protocol-base

Shared protocol code for client and service to share. Manages the lifetime of Quorum and proposals that needs to be consistent across client and service. It also provides utilities for facilitating summary creation.

Quorum and Proposal

A quorum proposal transitions between four possible states: propose, accept, reject, and commit.

A proposal begins in the propose state. The proposal is sent to the server and receives a sequence number which is used to uniquely identify it. Clients within the collaboration window accept the proposal by allowing their reference sequence number to go above the sequence number for the proposal. They reject it by submitting a reject message prior to sending a reference sequence number above the proposal number. Once the minimum sequence number goes above the sequence number for the proposal without any rejections it is considered accepted.

The proposal enters the commit state when the minimum sequence number goes above the sequence number at which it became accepted. In the commit state all subsequent messages are guaranteed to have been sent with knowledge of the proposal. Between the accept and commit state there may be messages with reference sequence numbers prior to the proposal being accepted.