From 6d93e778fd64ccc2c881ed607dcdd9bf347e6d5e Mon Sep 17 00:00:00 2001 From: Nadja Reitzenstein Date: Tue, 21 Sep 2021 20:17:12 +0200 Subject: [PATCH] cleanup --- state.dot | 131 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 81 insertions(+), 50 deletions(-) diff --git a/state.dot b/state.dot index c7c97e4..bf116c8 100644 --- a/state.dot +++ b/state.dot @@ -1,62 +1,93 @@ strict digraph state { - started - [label="BFFH just started"]; - created - [label="Machine was newly created"]; + rank = 0 + subgraph "cluster_internal_state" { + rank = 1 + ctr = applied + start + [shape=doublecircle, label="BFFH"] + created + [label="Machine object created"]; + start -> created; - fresh - [label="State is fresh"]; + created -> attach + [label="New state or loaded from disk"]; - started -> fresh; - created -> fresh; + attach + [label="Attach actor", shape=box]; - unapplied - [label="Stored but not applied"]; - applied - [label="All actors are done"]; - verified - [label="State was verified"]; + unapplied + [label="Unapplied"]; + applied + [label="Applied"]; + verified + [label="Verified"]; - fresh -> unapplied - [label="statechange received"]; - unapplied -> applied - [label="All actors have finished processing"]; - applied -> verified - [label="All actors have verified that the state change happened in real life too"]; + wait_apply + [label="Wait ∀ Actors", shape=box] + wait_verify + [label="Wait ∀ Actors", shape=box] - applied -> unapplied - [label="State was changed or a new actor was attached"]; - verified -> unapplied - [label="State was changed or a new actor was attached"]; + unapplied -> wait_apply -> applied; + applied -> wait_verify -> verified; - subgraph "actor" { - actor_fresh - [label="Actor was just constructed"]; - actor_attached - [label="Actor was just attached to a machine"]; - actor_unapplied + applied -> unapplied + [label="statechange received"]; + verified -> unapplied + [label="statechange received"]; + unapplied -> unapplied [label="statechange received"]; - actor_applied - [label="statechange processed"]; - actor_verified - [label="Measured real world and it matches the statechange"]; - actor_fresh -> actor_attached - [label="Initial state received"]; - actor_attached -> actor_applied - [label="Initial state applied (potentially noop)"]; - actor_attached -> actor_unapplied - [label="statechange received before finishing initial application"]; - actor_unapplied -> actor_applied - [label="processed statechange"]; - actor_applied -> actor_verified - [label="measure"]; + unapplied -> attach -> unapplied; + applied -> attach -> unapplied; + verified -> attach -> unapplied; } - unapplied -> actor_unapplied - [label="send statechange to actor"]; - actor_applied -> applied - [label="actor processed statechange"]; - actor_verified -> verified - [label="actor verifies statechange"]; + + subgraph "cluster_actor" { + rank = 1 + center = actor_applied + actor_start + [shape=doublecircle, label="Actor"]; + actor_fresh + [label="Actor was just constructed"]; + actor_start -> actor_fresh; + + actor_attached + [label="Attached"]; + actor_unapplied + [label="Unapplied"]; + actor_applied + [label="Applied"]; + actor_verified + [label="Verified"]; + + wait_initial + [label="Recv", shape=box]; + wait_state + [label="Recv", shape=box]; + + actor_fresh -> wait_initial -> actor_attached; + + actor_attached -> actor_applied + [label="initialize/apply"]; + actor_unapplied -> actor_applied + [label="apply"]; + actor_applied -> actor_verified + [label="verify"]; + + actor_unapplied -> wait_state; + actor_applied -> wait_state; + actor_verified -> wait_state; + + wait_state -> actor_unapplied; + } + + attach -> wait_initial + [label="Send initial state to that actor", style=dotted] + unapplied -> wait_state + [label="Send new state to all actors", style=dotted]; + actor_applied -> wait_apply + [label="Confirm apply", style=dotted]; + actor_verified -> wait_verify + [label="Confirm verify", style=dotted]; }