Merge java/fault-tolerance-sample.md with scala/fault-tolerance-sample.md (#23160)

This commit is contained in:
Richard Imaoka 2017-06-14 21:27:59 +09:00 committed by Arnout Engelen
parent 1d5d14d0b1
commit b05cd61ca2
2 changed files with 6 additions and 39 deletions

View file

@ -1,38 +0,0 @@
<a id="fault-tolerance-sample"></a>
# Diagrams of the Fault Tolerance Sample
![faulttolerancesample-normal-flow.png](../images/faulttolerancesample-normal-flow.png)
*The above diagram illustrates the normal message flow.*
**Normal flow:**
|Step | Description |
|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|1 | The progress `Listener` starts the work. |
|2 | The `Worker` schedules work by sending `Do` messages periodically to itself |
|3, 4, 5 | When receiving `Do` the `Worker` tells the `CounterService` to increment the counter, three times. The `Increment` message is forwarded to the `Counter`, which updates its counter variable and sends current value to the `Storage`.|
|6, 7 | The `Worker` asks the `CounterService` of current value of the counter and pipes the result back to the `Listener`. |
![faulttolerancesample-failure-flow.png](../images/faulttolerancesample-failure-flow.png)
*The above diagram illustrates what happens in case of storage failure.*
**Failure flow:**
|Step | Description |
|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------|
|1 | The `Storage` throws `StorageException`. |
|2 | The `CounterService` is supervisor of the `Storage` and restarts the `Storage` when `StorageException` is thrown. |
|3, 4, 5, 6 | The `Storage` continues to fail and is restarted. |
|7 | After 3 failures and restarts within 5 seconds the `Storage` is stopped by its supervisor, i.e. the `CounterService`. |
|8 | The `CounterService` is also watching the `Storage` for termination and receives the `Terminated` message when the `Storage` has been stopped ...|
|9, 10, 11 | and tells the `Counter` that there is no `Storage`. |
|12 | The `CounterService` schedules a `Reconnect` message to itself. |
|13, 14 | When it receives the `Reconnect` message it creates a new `Storage` ... |
|15, 16 | and tells the `Counter` to use the new `Storage` |
# Full Source Code of the Fault Tolerance Sample
@@snip [FaultHandlingDocSample.java]($code$/java/jdocs/actor/FaultHandlingDocSample.java) { #all }

View file

@ -0,0 +1 @@
../scala/fault-tolerance-sample.md

View file

@ -35,4 +35,8 @@
# Full Source Code of the Fault Tolerance Sample # Full Source Code of the Fault Tolerance Sample
@@snip [FaultHandlingDocSample.scala]($code$/scala/docs/actor/FaultHandlingDocSample.scala) { #all } Scala
: @@snip [FaultHandlingDocSample.scala]($code$/scala/docs/actor/FaultHandlingDocSample.scala) { #all }
Java
: @@snip [FaultHandlingDocSample.java]($code$/java/jdocs/actor/FaultHandlingDocSample.java) { #all }