|
| 1 | +digraph Paxos { |
| 2 | + concentrate=true |
| 3 | +// subgraph cluster0 { |
| 4 | + collect -> state_recovering; |
| 5 | + collect -> send_mmp_collect -> handle_collect [style=dotted]; |
| 6 | + handle_collect -> send_mmp_last; |
| 7 | + send_mmp_last -> handle_last [style=dotted]; |
| 8 | + handle_last -> collect [label="collect(last_pn)"]; |
| 9 | + handle_last -> send_mmp_commit; |
| 10 | + handle_last -> state_active; |
| 11 | + handle_last -> begin; |
| 12 | + handle_last -> extend_lease; |
| 13 | + |
| 14 | +// color=grey; |
| 15 | +// style=filled; |
| 16 | +// label="Post-Election call chain"; |
| 17 | +// } |
| 18 | + |
| 19 | + election_finished -> leader_init; |
| 20 | + leader_init -> collect [label="collect(0)"]; |
| 21 | + send_mmp_commit -> handle_commit [style=dotted]; |
| 22 | + |
| 23 | + begin -> state_updating; |
| 24 | + begin -> send_mmp_begin; |
| 25 | + begin -> commit; |
| 26 | + |
| 27 | + send_mmp_begin -> handle_begin [style=dotted]; |
| 28 | + handle_begin -> state_updating; |
| 29 | + handle_begin -> send_mmp_accept; |
| 30 | + send_mmp_accept -> handle_accept [style=dotted]; |
| 31 | + |
| 32 | + handle_accept -> extend_lease; |
| 33 | + handle_accept -> state_active; |
| 34 | + handle_accept -> commit; |
| 35 | + |
| 36 | + extend_lease -> send_mmp_lease; |
| 37 | + send_mmp_lease -> handle_lease [style=dotted]; |
| 38 | + handle_lease -> state_active; |
| 39 | + handle_lease -> send_mmp_lease_ack; |
| 40 | + send_mmp_lease_ack -> handle_lease_ack [style=dotted]; |
| 41 | + |
| 42 | + commit -> send_mmp_commit; |
| 43 | + commit -> "last_committed++" [shape=box]; |
| 44 | + send_mmp_commit -> handle_commit [style=dotted]; |
| 45 | + |
| 46 | + handle_commit -> store_state; |
| 47 | + |
| 48 | + propose_pending -> propose_new_value; |
| 49 | + propose_new_value -> begin; |
| 50 | + |
| 51 | + election_finished [label="Election Finished", shape=box, bgcolor=grey, style=filled]; |
| 52 | + collect [label="collect()", shape=box]; |
| 53 | + commit [label="commit()", shape=box]; |
| 54 | + begin [label="begin()", shape=box]; |
| 55 | + extend_lease [label="extend_lease()", shape=box]; |
| 56 | + store_state [label="store_state()"]; // peon |
| 57 | + |
| 58 | + propose_pending [label="PaxosService::propose_pending()"]; |
| 59 | + propose_new_value [label="propose_new_value"]; |
| 60 | + |
| 61 | + send_mmp_collect [label="send(OP_COLLECT)", shape=box]; |
| 62 | + send_mmp_last [label="send(OP_LAST)"]; |
| 63 | + send_mmp_commit [label="send(OP_COMMIT)", shape=box]; |
| 64 | + send_mmp_begin [label="send(OP_BEGIN)", shape=box]; |
| 65 | + send_mmp_accept [label="send(OP_ACCEPT)"]; |
| 66 | + send_mmp_lease [label="send(OP_LEASE)", shape=box]; |
| 67 | + send_mmp_lease_ack [label="send(OP_LEASE_ACK)"]; |
| 68 | + |
| 69 | + handle_collect [label="handle_collect()"]; |
| 70 | + handle_last [label="handle_last()", shape=box]; |
| 71 | + handle_begin [label="handle_begin()"]; |
| 72 | + handle_accept [label="handle_accept()", shape=box]; |
| 73 | + handle_lease [label="handle_lease()"]; |
| 74 | + handle_lease_ack [label="handle_lease_ack()", shape=box]; |
| 75 | + handle_commit [label="handle_commit()"]; |
| 76 | + |
| 77 | + leader_init [label="Paxos::leader_init()", shape=box]; |
| 78 | + |
| 79 | + state_recovering [label="RECOVERING", shape=diamond]; |
| 80 | + state_active [label="ACTIVE", shape=diamond]; |
| 81 | + state_updating [label="UPDATING", shape=diamond]; |
| 82 | +} |
0 commit comments