1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
digraph {
node [shape=circle,style=unfilled,fixedsize=true,width=2.0]
node [color=blue,peripheries=1];
N0 [label="up:boot"]
node [color=orange,peripheries=2];
N1 [label="up:creating"]
N0 -> N1 [color=orange,penwidth=2.0];
N2 [label="up:starting"]
N0 -> N2 [color=orange,penwidth=2.0];
N3 [label="up:replay"]
N0 -> N3 [color=orange,penwidth=2.0];
N4 [label="up:resolve"]
N3 -> N4 [color=orange,penwidth=2.0];
N5 [label="up:reconnect"]
N3 -> N5 [color=orange,penwidth=2.0];
N4 -> N5 [color=orange,penwidth=2.0];
N6 [label="up:rejoin"]
N5 -> N6 [color=orange,penwidth=2.0];
N7 [label="up:clientreplay"]
N6 -> N7 [color=orange,penwidth=2.0];
node [color=green,peripheries=2];
S0 [label="up:active"]
N7 -> S0 [color=green,penwidth=2.0];
N1 -> S0 [color=green,penwidth=2.0];
N2 -> S0 [color=green,penwidth=2.0];
N6 -> S0 [color=green,penwidth=2.0];
node [color=green,peripheries=1];
S1 [label="up:standby"]
N0 -> S1 [color=green,penwidth=2.0];
S2 [label="up:standby_replay"]
N0 -> S2 [color=green,penwidth=2.0];
// going down but still accessible by clients
node [color=purple,peripheries=2];
S3 [label="up:stopping"]
S0 -> S3 [color=purple,penwidth=2.0];
// terminal (but "in")
node [shape=polygon,sides=6,color=red,peripheries=2];
D0 [label="down:failed"]
N2 -> D0 [color=red,penwidth=2.0];
N3 -> D0 [color=red,penwidth=2.0];
N4 -> D0 [color=red,penwidth=2.0];
N5 -> D0 [color=red,penwidth=2.0];
N6 -> D0 [color=red,penwidth=2.0];
N7 -> D0 [color=red,penwidth=2.0];
S0 -> D0 [color=red,penwidth=2.0];
S3 -> D0 [color=red,penwidth=2.0];
D0 -> N3 [color=red,penwidth=2.0];
// terminal (but not "in")
node [shape=polygon,sides=6,color=black,peripheries=1];
D1 [label="down:damaged"]
N3 -> D1 [color=black,penwidth=2.0];
N4 -> D1 [color=black,penwidth=2.0];
N5 -> D1 [color=black,penwidth=2.0];
N6 -> D1 [color=black,penwidth=2.0];
N7 -> D1 [color=black,penwidth=2.0];
S0 -> D1 [color=black,penwidth=2.0];
S3 -> D1 [color=black,penwidth=2.0];
D1 -> D0 [color=red,penwidth=2.0]
node [shape=polygon,sides=6,color=purple,peripheries=1];
D3 [label="down:stopped"]
S3 -> D3 [color=purple,penwidth=2.0];
}
|