You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The result is that messages sent by slave-container agents may not reach their destination if these messages happen to fall in the gap between init() and start() on the master container.
Demonstration:
using Fjage
@agentstruct Dummy; endfunction Fjage.startup(agent::Dummy)
node =agentforservice(agent, "org.arl.unet.Services.NODE_INFO")
# Shouldn't trigger, but does@assert!isnothing(node.address)
end
simulator =run(`bin/unet samples/2-node-network.groovy`, wait =false)
try
container =SlaveContainer("localhost", 1101, reconnect =false)
add(container, Dummy())
whiletruetrystart(container)
breakcatch e
sleep(0.01)
endendsleep(3.0)
finallykill(simulator)
end
The text was updated successfully, but these errors were encountered:
The Fjåge
MasterContainer
sends out an"{\"alive\": true}"
message once initialisation completed.fjage/src/main/java/org/arl/fjage/remote/MasterContainer.java
Lines 347 to 352 in c53ff1d
fjage/src/main/java/org/arl/fjage/remote/ConnectionHandler.java
Lines 75 to 98 in c53ff1d
However,
Container.send()
only forwards messages after the container has started.fjage/src/main/java/org/arl/fjage/remote/MasterContainer.java
Lines 220 to 221 in c53ff1d
This is a problem because Fjage.jl interprets the
"{\"alive\": true}"
messages as a signal that the master container is now ready to accept messages.https://github.com/org-arl/Fjage.jl/blob/b109126034cbdc517d8003e783df890677657002/src/gw.jl#L145-L148
https://github.com/org-arl/Fjage.jl/blob/b109126034cbdc517d8003e783df890677657002/src/container.jl#L468-L476
The result is that messages sent by slave-container agents may not reach their destination if these messages happen to fall in the gap between
init()
andstart()
on the master container.Demonstration:
The text was updated successfully, but these errors were encountered: