Open busma13 opened 4 weeks ago
sequenceDiagram
box transparent Pause/Resume Execution
participant Master
participant Execution Controller
end
rect rgb(30,30,30)
autonumber
note over Master, Execution Controller: Pause
Master->> Master: setup onceWithTimeout(msg.id)
Master-->>+Execution Controller: emit('execution:pause', msg)
Execution Controller->>Execution Controller: on('execution:pause', msg)<br/>tell scheduler to pause<br/>emit('message:response', msg)
Execution Controller-->>- Master: emit(msg.id)
end
rect rgb(30,30,30)
note over Master, Execution Controller: Resume
Master->> Master: setup onceWithTimeout(msg.id)
Master-->>+Execution Controller: emit('execution:resume', msg)
Execution Controller->>Execution Controller: on('execution:resume', msg)<br/>tell scheduler to resume<br/>emit('message:response', msg)
Execution Controller-->>- Master: emit(msg.id)
end
sequenceDiagram
box transparent Cluster Analytics
participant Master
participant Execution Controller
end
rect rgb(30,30,30)
autonumber
note over Master, Execution Controller: EXC.run()
loop setInterval()
Execution Controller->>Execution Controller: create analytics diffs obj
Execution Controller->>Execution Controller: setup onceWithTimeout(msg.id)
Execution Controller-->>+Master: emit('cluster:analytics', msg)
Master->>Master: on('cluster:analytics', msg)<br/>update clusterAnalytics.controllers<br/>emit('cluster:analytics', { diff, current})<br/>emit('message:response')
Master-->>-Execution Controller: emit(msg.id)
Execution Controller->>Execution Controller: Update pushedAnalytics object
end
end
rect rgb(30,30,30)
note over Master, Execution Controller: EXC.shutdown()
Execution Controller->>Execution Controller: clearInterval()
Execution Controller->>Execution Controller: create analytics diffs obj
Execution Controller->>Execution Controller: setup onceWithTimeout(msg.id)
Execution Controller-->>+Master: emit('cluster:analytics', msg)
Master->>Master: on('cluster:analytics', msg)<br/>update clusterAnalytics.controllers<br/>emit('cluster:analytics', { diff, current})<br/>emit('message:response')
Master-->>-Execution Controller: emit(msg.id)
Execution Controller->Execution Controller: Finish Shutdown
end
sequenceDiagram
box transparent Execution Analytics
participant API
participant Master
participant Execution Controller
end
API->>+Master: GET<br/>'/txt/slicers'<br/>'/txt/controllers'<br/>'/cluster/slicers'<br/>'/cluster/controllers'<br/>'/jobs/:jobId/slicer'<br/>'/jobs/:jobId/controller'<br/>'/ex/:exId/slicer'<br/>'/ex/:exId/controller'
Master->>Master: setup onceWithTimeout(msg.id)
Master-->>+Execution Controller: emit('execution:analytics', msg)
Execution Controller->>Execution Controller: on('execution:analytics', msg)<br/>add analytics to msg.payload<br/> emit('message:response', msg)
Execution Controller-->> Master: emit(msg.id)
Master->>-API: response
This issue is just a place to document
teraslice-messaging
communications. Sequence diagrams are generated usingmermaid-js
.Class inheritance
cluster-master/
Client
extends messenger/Client
extends messenger/Core
extendsEventEmitter
cluster-master/Server
extends messenger/Server
extends messenger/Core
extendsEventEmitter
execution-controller/
Client
extends messenger/Client
extends messenger/Core
extendsEventEmitter
execution-controller/Server
extends messenger/Server
extends messenger/Core
extendsEventEmitter
List of messages for each relevant function within all messaging classes
send, sendToAll and emit will emit messages handle response, once, onceWithTimeout and on will listen for messages
TODO: add styling to diagrams to make things clearer and more legible.