Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add diagram for the main chaos page sample #2484

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions docs/chaos/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,79 @@ builder
```
<!-- endSnippet -->

```mermaid
sequenceDiagram
actor C as Caller
participant P as Pipeline
participant F as Fault
participant L as Latency
participant O as Outcome
participant B as Behavior
participant D as DecoratedUserCallback

C->>P: Calls ExecuteAsync

P->>F: Calls ExecuteCore

%% Fault Chaos
activate F
F-->>F: Determines Injection
deactivate F

alt 2% injects: 🙈
F->>P: Throws injected Fault
P->>C: Propagates Exception
else 98% passes: 🐵
peter-csala marked this conversation as resolved.
Show resolved Hide resolved
F->>L: Calls ExecuteCore
end

%% Delay Chaos
activate L
L-->>L: Determines Injection
deactivate L

alt 50% injects: 🙈
L->>L: Injects delay
L->>O: Calls ExecuteCore
else 50% passes: 🐵
L->>O: Calls ExecuteCore
end

%% Outcome Chaos
activate O
O-->>O: Determines Injection
deactivate O

alt 10% injects: 🙈
O->>O: Injects outcome
O->>L: Returns result
L->>F: Returns result
F->>P: Returns result
P->>C: Returns result
else 90% passes: 🐵
O->>B: Calls ExecuteCore
end

%% Behavior Chaos
activate B
B-->>B: Determines Injection
deactivate B

alt 1% injects: 🙈
B->>B: Injects behavior
B->>D: Invokes
else 99% passes: 🐵
B->>D: Invokes
end

D->>B: Returns result
B->>O: Returns result
O->>L: Returns result
L->>F: Returns result
F->>P: Returns result
P->>C: Returns result
```

> [!NOTE]
> It is usual to place the chaos strategy as the last strategy in the resilience pipeline.
> By placing the chaos strategies as last, they subvert the usual outbound call at the last minute, substituting their fault or adding extra latency, etc.
Expand Down