Versions Compared

Key

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

...

Algorithm's purpose is identify wrong order of messages by signing the messages with actual cut version color (red or white). Then every node knows which side of the cut this transaction belongs to. 

Algorithm's steps:

  1. Initially all process are white.
  2. Random process can start global Consistent Cut a snapshot (furthermore, multiple process may start it simultaneously);
  3. Mark every message between distributed processes with CutVersion;
  4. :
    1. Node colors itself to red.
    2. It prepares the sent collection for every OUT channel: it contains sent messages to every outgoing channel j.
    3. It prepares the received collection for every IN channel: it contains all received after local snapshot messages from every node j.
    4. It prepares a marker message: it is red, and has a payload of sent.
  5. Mark every ordinal message between distributed processes with the marker message, if no upcoming message to a node, then it just sends the marker as an ordinary message.
  6. On receiving the ordinal message a process has to check the marker at first, before applying the On receiving a message a process has to handle the CutVersion from message payload at first, before applying message;
  7. If receiving CutVersion color differs from local CutVersion color, node has to trigger the Consistent Cut (CC) procedure;local snapshot procedure.
  8. Handle sent from the received marker:
    1. calculates ChannelState for the channel it received a message: sent - received; where sent extracts from the marker, received - calculates locally since local snapshot.
  9. On received marker messages from all IN channels, it prepares a snapshot:
    1. Local snapshot of
    CC procedure consists of steps:
    1. update local CutVersion;
    2. Consistent state includes nodes state (LocalState) and state of channels between nodes (ChannelState). Node has to commit those states:CC for node i: Ni = LocalStatei + Σ ChannelStateijChannelState includes all messages sent between node i and node j (sent - received)
  10. Every such local snapshot is a unit of global snapshot.

Map the algorithm to Ignite

...