G working working prepared prepared working->prepared aborted aborted working->aborted committed committed prepared->committed prepared->aborted
blockdiag seqdiag { default_note_color = lightblue; === Voting Phase === Coordinator -> "Participant 1" [label = "prepare", note="Force write decision"]; Coordinator -> "Participant 2" [label = "prepare", note="Force write decision"]; Coordinator <- "Participant 1" [label = "prepared"]; Coordinator <- "Participant 2" [label = "prepared", leftnote="Force write decision record"]; === Decision Phase === Coordinator -> "Participant 1" [label = "commit", note="Force write commit record"]; Coordinator -> "Participant 2" [label = "commit", note="Force write commit record"]; Coordinator <- "Participant 1" [label = "committed"]; Coordinator <- "Participant 2" [label = "committed", leftnote="Non-forced write end record"]; } Coordinator Participant 1 Participant 2 Force write decision Force write decision Force write decision record Force write commit record Force write commit record Non-forced write end record prepare prepare prepared prepared commit commit committed committed Voting Phase Decision Phase