diff options
author | Maria-12648430 <maria-12648430@hnc-agency.org> | 2021-04-21 18:03:21 +0200 |
---|---|---|
committer | Maria-12648430 <maria-12648430@hnc-agency.org> | 2021-04-21 18:03:21 +0200 |
commit | f2219677422354e71cb11bbfd2a0e0bbd92a8e7d (patch) | |
tree | 7547f2805c67d89a82cf51f0c46d01d6aba239b3 /system/doc/design_principles | |
parent | 2822067a6931c123fe14f7c634c72158fc7c039a (diff) | |
download | erlang-f2219677422354e71cb11bbfd2a0e0bbd92a8e7d.tar.gz |
Improve illustrations in supervisor chapter of design principles
Diffstat (limited to 'system/doc/design_principles')
-rw-r--r-- | system/doc/design_principles/Makefile | 7 | ||||
-rwxr-xr-x | system/doc/design_principles/sup-one_for_all.svg | 127 | ||||
-rwxr-xr-x | system/doc/design_principles/sup-one_for_one.svg | 86 | ||||
-rwxr-xr-x | system/doc/design_principles/sup-rest_for_one.svg | 125 | ||||
-rw-r--r-- | system/doc/design_principles/sup4.fig | 32 | ||||
-rw-r--r-- | system/doc/design_principles/sup4.gif | bin | 1974 -> 0 bytes | |||
-rw-r--r-- | system/doc/design_principles/sup5.fig | 43 | ||||
-rw-r--r-- | system/doc/design_principles/sup5.gif | bin | 2536 -> 0 bytes | |||
-rw-r--r-- | system/doc/design_principles/sup_princ.xml | 16 |
9 files changed, 356 insertions, 80 deletions
diff --git a/system/doc/design_principles/Makefile b/system/doc/design_principles/Makefile index 833e66ca43..5ba09513ab 100644 --- a/system/doc/design_principles/Makefile +++ b/system/doc/design_principles/Makefile @@ -56,13 +56,14 @@ GIF_FILES = \ dist4.gif \ dist5.gif \ inclappls.gif \ - sup4.gif \ - sup5.gif \ sup6.gif SVG_FILES = \ code_lock.svg \ - code_lock_2.svg + code_lock_2.svg \ + sup-one_for_all.svg \ + sup-one_for_one.svg \ + sup-rest_for_one.svg IMAGE_FILES = $(GIF_FILES) $(SVG_FILES) diff --git a/system/doc/design_principles/sup-one_for_all.svg b/system/doc/design_principles/sup-one_for_all.svg new file mode 100755 index 0000000000..e4cfb8fbbd --- /dev/null +++ b/system/doc/design_principles/sup-one_for_all.svg @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="21cm" height="14.4cm" viewBox="-5 -5 330 220" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <style type="text/css"> + .link {stroke: #000000; stroke-width: 2;} + + .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + + .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .child.label.index {font-size: 12px;} + .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + .child.body.terminated {fill: #ff8888;} + .child.body.sup-terminated {fill: #ffaa00;} + .child.body.restarted {stroke: #00aa00;} + + .ellipsis {fill: #000000; fill-opacity: 1; stroke: none;} + .ellipsis.sup-terminated {fill: #ffaa00;} + .ellipsis.restarted {stroke: #00aa00;} + + .arrow {stroke-width: 2; stroke-linecap: round;} + .arrow.shutdown {stroke: #ffaa00;} + .arrow.restart {stroke: #00aa00;} + + .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;} + + .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;} + .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;} + .legend.body.sup-terminated {fill: #ffaa00; fill-opacity: 1; stroke: none;} + .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;} + </style> + <!-- illustration for the one_for_all strategy --> + + <!-- linking lines --> + <line class="link" x1="140" y1="40" x2="20" y2="100" /> + <line class="link" x1="140" y1="40" x2="100" y2="100" /> + <line class="link" x1="140" y1="40" x2="180" y2="100" /> + <line class="link" x1="140" y1="40" x2="300" y2="100" /> + + <!-- supervisor --> + <g transform="translate(140 20)"> + <rect class="sup body" x="-20" y="-20" width="40" height="40"/> + <text class="sup label" x="0" y="8.5">S</text> + </g> + + <!-- child process 1 --> + <g transform="translate(20 100)"> + <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text> + </g> + + <!-- child process 2 --> + <g transform="translate(100 100)"> + <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text> + </g> + + <!-- child process 3 --> + <g transform="translate(180 100)"> + <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text> + </g> + + <!-- ... --> + <g class="ellipsis sup-terminated restarted" transform="translate(240 100)"> + <ellipse cx="-15" cy="0" rx="2" ry="2"/> + <ellipse cx="0" cy="0" rx="2" ry="2"/> + <ellipse cx="15" cy="0" rx="2" ry="2"/> + </g> + + <!-- child process n --> + <g transform="translate(300 100)"> + <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">n</tspan></text> + </g> + + <!-- shutdown order arrow --> + <g class="arrow shutdown" transform="translate(0 130)"> + <line x1="300" y1="0" x2="140" y2="0" /> + <line x1="140" y1="0" x2="60" y2="0" style="stroke-dasharray: 1 5" /> + <line x1="60" y1="0" x2="20" y2="0" /> + <line x1="20" y1="0" x2="30" y2="-3" /> + <line x1="20" y1="0" x2="30" y2="3" /> + </g> + + <!-- restart order arrow --> + <g class="arrow restart" transform="translate(0 140)"> + <line x1="20" y1="0" x2="300" y2="0" /> + <line x1="300" y1="0" x2="290" y2="-3" /> + <line x1="300" y1="0" x2="290" y2="3" /> + </g> + + <!-- divider --> + <line class="divider" transform="translate(0 150)" x1="-5" y1="0" x2="330" y2="0" /> + + <!-- legend --> + <g transform="translate(5 155)"> + <g transform="translate(0 10)"> + <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Terminated process</text> + </g> + <g transform="translate(0 22)"> + <ellipse class="legend body sup-terminated" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Process terminated by the supervisor</text> + </g> + <g transform="translate(0 34)"> + <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/> + <text font-size="10" style="fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal" x="10" y="3">Process restarted by the supervisor</text> + </g> + <g transform="translate(0 46)"> + <g class="arrow shutdown" style="stroke-width: 1.5"> + <line x1="5" y1="0" x2="-5" y2="0" /> + <line x1="-5" y1="0" x2="0" y2="-2" /> + <line x1="-5" y1="0" x2="0" y2="2" /> + </g> + <text class="legend label" x="10" y="3">Shutdown order</text> + </g> + <g transform="translate(0 58)"> + <g class="arrow restart" style="stroke-width: 1.5"> + <line x1="-5" y1="0" x2="5" y2="0" /> + <line x1="5" y1="0" x2="0" y2="-2" /> + <line x1="5" y1="0" x2="0" y2="2" /> + </g> + <text class="legend label" x="10" y="3">Restart order</text> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/system/doc/design_principles/sup-one_for_one.svg b/system/doc/design_principles/sup-one_for_one.svg new file mode 100755 index 0000000000..d422246124 --- /dev/null +++ b/system/doc/design_principles/sup-one_for_one.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="21cm" height="11.2cm" viewBox="-5 -5 330 180" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <style type="text/css"> + .link {stroke: #000000; stroke-width: 2;} + + .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + + .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .child.label.index {font-size: 12px;} + .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + .child.body.terminated {fill: #ff8888;} + .child.body.sup-terminated {fill: #ffaa00;} + .child.body.restarted {stroke: #00aa00;} + + .ellipsis {fill: #000000; fill-opacity: 1; stroke: none} + .ellipsis.sup-terminated {fill: #ffaa00;} + .ellipsis.restarted {stroke: #00aa00;} + + .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;} + + .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;} + .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;} + .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;} + </style> + <!-- illustration for the one_for_one strategy --> + + <!-- linking lines --> + <line class="link" x1="140" y1="40" x2="20" y2="100" /> + <line class="link" x1="140" y1="40" x2="100" y2="100" /> + <line class="link" x1="140" y1="40" x2="180" y2="100" /> + <line class="link" x1="140" y1="40" x2="300" y2="100" /> + + <!-- supervisor --> + <g transform="translate(140 20)"> + <rect class="sup body" x="-20" y="-20" width="40" height="40"/> + <text class="sup label" x="0" y="8.5">S</text> + </g> + + <!-- child process 1 --> + <g transform="translate(20 100)"> + <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" font-size="27" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text> + </g> + + <!-- child process 2 --> + <g transform="translate(100 100)"> + <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text> + </g> + + <!--- child process 3 --> + <g transform="translate(180 100)"> + <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text> + </g> + + <!-- ... --> + <g class="ellipsis" transform="translate(240 100)"> + <ellipse cx="-15" cy="0" rx="2" ry="2"/> + <ellipse cx="0" cy="0" rx="2" ry="2"/> + <ellipse cx="15" cy="0" rx="2" ry="2"/> + </g> + + <!-- child process n --> + <g transform="translate(300 100)"> + <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" font-size="27" x="0" y="8.5">P</tspan><tspan class="child label index" font-size="12" x="8" y="12">n</tspan></text> + </g> + + <!-- divider --> + <line class="divider" transform="translate(0 135)" x1="-5" y1="0" x2="330" y2="0" /> + + <!-- legend --> + <g transform="translate(5 140)"> + <g transform="translate(0 10)"> + <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Terminated process</text> + </g> + <g transform="translate(0 25)"> + <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Process restarted by the supervisor</text> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/system/doc/design_principles/sup-rest_for_one.svg b/system/doc/design_principles/sup-rest_for_one.svg new file mode 100755 index 0000000000..33de28e99f --- /dev/null +++ b/system/doc/design_principles/sup-rest_for_one.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="21cm" height="14.4cm" viewBox="-5 -5 330 220" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <style type="text/css"> + .link {stroke: #000000; stroke-width: 2;} + + .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + + .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;} + .child.label.index {font-size: 12px;} + .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;} + .child.body.terminated {fill: #ff8888;} + .child.body.sup-terminated {fill: #ffaa00;} + .child.body.restarted {stroke: #00aa00;} + + .ellipsis {fill: #000000; fill-opacity: 1; stroke: none;} + .ellipsis.sup-terminated {fill: #ffaa00;} + .ellipsis.restarted {stroke: #00aa00;} + + .arrow {stroke-width: 2; stroke-linecap: round;} + .arrow.shutdown {stroke: #ffaa00;} + .arrow.restart {stroke: #00aa00;} + + .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;} + + .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;} + .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;} + .legend.body.sup-terminated {fill: #ffaa00; fill-opacity: 1; stroke: none;} + .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;} + </style> + <!-- illustration for the rest_for_one strategy --> + + <!-- linking lines --> + <line class="link" x1="140" y1="40" x2="20" y2="100" /> + <line class="link" x1="140" y1="40" x2="100" y2="100" /> + <line class="link" x1="140" y1="40" x2="180" y2="100" /> + <line class="link" x1="140" y1="40" x2="300" y2="100" /> + + <!-- supervisor --> + <g transform="translate(140 20)"> + <rect class="sup body" x="-20" y="-20" width="40" height="40"/> + <text class="sup label" x="0" y="8.5">S</text> + </g> + + <!-- child process 1 --> + <g transform="translate(20 100)"> + <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text> + </g> + + <!-- child process 2 --> + <g transform="translate(100 100)"> + <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text> + </g> + + <!-- child process 3 --> + <g transform="translate(180 100)"> + <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text> + </g> + + <!-- ... --> + <g class="ellipsis sup-terminated restarted" transform="translate(240 100)"> + <ellipse cx="-15" cy="0" rx="2" ry="2"/> + <ellipse cx="0" cy="0" rx="2" ry="2"/> + <ellipse cx="15" cy="0" rx="2" ry="2"/> + </g> + + <!-- child process n --> + <g transform="translate(300 100)"> + <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/> + <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">n</tspan></text> + </g> + + <!-- shutdown order arrow --> + <g class="arrow shutdown" transform="translate(0 130)"> + <line x1="300" y1="0" x2="180" y2="0" /> + <line x1="180" y1="0" x2="190" y2="-3" /> + <line x1="180" y1="0" x2="190" y2="3" /> + </g> + + <!-- restart order arrow --> + <g class="arrow restart" transform="translate(0 140)"> + <line x1="100" y1="0" x2="300" y2="0" /> + <line x1="300" y1="0" x2="290" y2="-3" /> + <line x1="300" y1="0" x2="290" y2="3" /> + </g> + + <!-- divider --> + <line class="divider" transform="translate(0 150)" x1="-5" y1="0" x2="330" y2="0" /> + + <!-- legend --> + <g transform="translate(5 155)"> + <g transform="translate(0 10)"> + <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Terminated process</text> + </g> + <g transform="translate(0 22)"> + <ellipse class="legend body sup-terminated" cx="0" cy="0" rx="5" ry="5"/> + <text class="legend label" x="10" y="3">Process terminated by the supervisor</text> + </g> + <g transform="translate(0 34)"> + <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/> + <text font-size="10" style="fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal" x="10" y="3">Process restarted by the supervisor</text> + </g> + <g transform="translate(0 46)"> + <g class="arrow shutdown" style="stroke-width: 1.5"> + <line x1="5" y1="0" x2="-5" y2="0" /> + <line x1="-5" y1="0" x2="0" y2="-2" /> + <line x1="-5" y1="0" x2="0" y2="2" /> + </g> + <text class="legend label" x="10" y="3">Shutdown order</text> + </g> + <g transform="translate(0 58)"> + <g class="arrow restart" style="stroke-width: 1.5"> + <line x1="-5" y1="0" x2="5" y2="0" /> + <line x1="5" y1="0" x2="0" y2="-2" /> + <line x1="5" y1="0" x2="0" y2="2" /> + </g> + <text class="legend label" x="10" y="3">Restart order</text> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/system/doc/design_principles/sup4.fig b/system/doc/design_principles/sup4.fig deleted file mode 100644 index 9127f9797c..0000000000 --- a/system/doc/design_principles/sup4.fig +++ /dev/null @@ -1,32 +0,0 @@ -#FIG 3.1 -Landscape -Center -Inches -1200 2 -6 2100 750 2550 1200 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2100 750 2550 750 2550 1200 2100 1200 2100 750 -4 0 -1 0 0 2 14 0.0000 4 150 105 2250 1050 1\001 --6 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 4762 2700 293 293 4575 2475 4950 2925 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 3112 2775 293 293 2925 2550 3300 3000 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 1987 2775 293 293 1800 2550 2175 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 675 2550 1125 2550 1125 3000 675 3000 675 2550 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 900 2550 2250 1200 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1950 2475 2325 1200 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 1200 3000 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2475 1200 4500 2550 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2625 2325 3450 3150 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2625 3225 3525 2325 -4 0 -1 0 0 2 14 0.0000 4 150 240 1875 2850 P1\001 -4 0 -1 0 0 2 14 0.0000 4 150 240 3000 2850 P2\001 -4 0 -1 0 0 2 14 0.0000 4 150 255 4650 2775 Pn\001 -4 0 -1 0 0 0 14 0.0000 4 195 2025 3450 975 One for one supervision\001 -4 0 -1 0 0 0 14 0.0000 4 195 2490 3450 1200 If any child dies it is restarted\001 diff --git a/system/doc/design_principles/sup4.gif b/system/doc/design_principles/sup4.gif Binary files differdeleted file mode 100644 index fc099f9b06..0000000000 --- a/system/doc/design_principles/sup4.gif +++ /dev/null diff --git a/system/doc/design_principles/sup5.fig b/system/doc/design_principles/sup5.fig deleted file mode 100644 index 554ab28ba0..0000000000 --- a/system/doc/design_principles/sup5.fig +++ /dev/null @@ -1,43 +0,0 @@ -#FIG 3.1 -Landscape -Center -Inches -1200 2 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 4762 2700 293 293 4575 2475 4950 2925 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 3112 2775 293 293 2925 2550 3300 3000 -1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 1987 2775 293 293 1800 2550 2175 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 675 2550 1125 2550 1125 3000 675 3000 675 2550 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 900 2550 2250 1200 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1950 2475 2325 1200 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 1200 3000 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2475 1200 4500 2550 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2100 750 2550 750 2550 1200 2100 1200 2100 750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2775 2325 3450 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2775 3150 3525 2400 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4350 3075 5100 2250 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4425 2175 5100 3150 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1650 2325 2325 3150 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1650 3150 2325 2400 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 525 2325 1350 3150 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 525 3150 1350 2325 -4 0 -1 0 0 2 14 0.0000 4 150 240 1875 2850 P1\001 -4 0 -1 0 0 2 14 0.0000 4 150 240 3000 2850 P2\001 -4 0 -1 0 0 2 14 0.0000 4 150 255 4650 2775 Pn\001 -4 0 -1 0 0 0 14 0.0000 4 195 2310 3525 1005 If any child dies all children\001 -4 0 -1 0 0 0 14 0.0000 4 150 3015 3525 1260 are terminated and all are restarted\001 -4 0 -1 0 0 2 14 0.0000 4 105 105 2250 1050 a\001 -4 0 -1 0 0 0 14 0.0000 4 195 2040 3525 750 all-for-one supervision\001 diff --git a/system/doc/design_principles/sup5.gif b/system/doc/design_principles/sup5.gif Binary files differdeleted file mode 100644 index 1197278f63..0000000000 --- a/system/doc/design_principles/sup5.gif +++ /dev/null diff --git a/system/doc/design_principles/sup_princ.xml b/system/doc/design_principles/sup_princ.xml index f03c317492..75ca085ed5 100644 --- a/system/doc/design_principles/sup_princ.xml +++ b/system/doc/design_principles/sup_princ.xml @@ -125,11 +125,18 @@ SupFlags = #{strategy => Strategy, ...}</code> <p>The <c>strategy</c> key is optional in this map. If it is not given, it defaults to <c>one_for_one</c>.</p> + <note> + <p>For simplicity, the diagrams shown in this section display a + setup where all the depicted children are assumed to have + a <seeguide marker="#restart">restart type</seeguide> of + <c>permanent</c>.</p> + </note> + <section> <title>one_for_one</title> <p>If a child process terminates, only that process is restarted.</p> <marker id="sup4"></marker> - <image file="../design_principles/sup4.gif"> + <image file="../design_principles/sup-one_for_one.svg" width="80%"> <icaption>One_For_One Supervision</icaption> </image> </section> @@ -140,7 +147,7 @@ SupFlags = #{strategy => Strategy, ...}</code> terminated, and then all child processes, including the terminated one, are restarted.</p> <marker id="sup5"></marker> - <image file="../design_principles/sup5.gif"> + <image file="../design_principles/sup-one_for_all.svg" width="80%"> <icaption>One_For_All Supervision</icaption> </image> </section> @@ -151,6 +158,10 @@ SupFlags = #{strategy => Strategy, ...}</code> processes (that is, the child processes after the terminated process in start order) are terminated. Then the terminated child process and the rest of the child processes are restarted.</p> + <marker id="sup6"></marker> + <image file="../design_principles/sup-rest_for_one.svg" width="80%"> + <icaption>Rest_For_One Supervision</icaption> + </image> </section> <section> @@ -721,3 +732,4 @@ supervisor:terminate_child(Sup, Pid)</code> </section> </section> </chapter> + |