SWO Group
The swogrp
package handles orchestrating the state and transitions of the SWO process. The state of the cluster can be determined by following the sequence in the message log, which is the source of truth.
Cluster State
sequenceDiagram
actor admin as Admin
participant api as API Node
participant log as Message Log
participant engine as Engine Node
note over admin,engine: Cluster State: **Unknown**
admin ->> api : Click(Reset)
activate api
api ->> log : "cancel"
api ->> api : DisableTriggers()
api ->> log : "reset"
api -->> admin: OK
deactivate api
note over admin,engine: Cluster State: **Resetting**
engine ->> log: "hello"
activate engine
note over engine: Becomes Leader
api ->> log: "hello"
engine ->> engine: Wait 3s for "hello" messages
engine ->> log: "reset-end"
deactivate engine
note over admin,engine: Cluster State: **Idle**
admin ->> api: Click(Execute)
activate api
api ->> log: "execute"
api -->> admin: OK
deactivate api
note over admin,engine: Cluster State: **Syncing**
log -->> engine: "execute"
activate engine
engine ->> engine: EnableTriggers()
engine ->> engine: InitialSync()
engine ->> engine: LogicalSync() x10
engine ->> log: "pause"
deactivate engine
note over admin,engine: Cluster State: **Pausing**
engine ->> engine: Pause()
engine ->> log: "paused"
api ->> api: Pause()
api ->> log: "paused"
note over admin,engine: Cluster State: **Executing**
log -->> engine: 2/2 "paused"
activate engine
engine ->> engine: LogicalSync() x10
engine ->> engine: FinalSync()
engine ->> log: "done"
deactivate engine
note over admin,engine: Cluster State: **Done**
Last updated