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 patch from PR #35 effectively broke the use of a SlaveActivity without a master running an ExecutionEngine. The console and log file is filled with
44.685 [ FATAL ][uxvcos] SlaveActivity: cannot push messages to another engine, current engine is unsupported.
In my use case I have a custom main activity that controls the execution of all slave components, each of them running in a SlaveActivitiy. This main activity is the master of all slaves, but has no ExecutionEngine. Some slaves have event ports because I also use them in other deployments running in a non-periodic activity which requires triggering. Every write into such an event port prints the above log message.
Possible solutions:
Remove the log message and let SlaveActivity ignore triggers silently if no master activity is set as it was before.
I am aware of the problems this might cause for the original issue with blocking operation calls without a warning message. Perhaps as an alternative we could add a special handling in bool ExecutionEngine::process(DisposableInterface* c ) that directly queues the messages in the master's ExecutionEngine if available instead of taking them over later from the trigger() call? I will setup a pull request for this if it sounds reasonable to you.
Only allow an ExecutionEngine as master of SlaveActivities and clearly state that this is the only supported use case. This basically comes down to change the type of the mmaster member from base::RunnableInterface * to ExecutionEngine * and drop the dynamic_cast in trigger().
The text was updated successfully, but these errors were encountered:
The patch from PR #35 effectively broke the use of a
SlaveActivity
without a master running anExecutionEngine
. The console and log file is filled withmessages. The source is in SlaveActivity.cpp:187.
In my use case I have a custom main activity that controls the execution of all slave components, each of them running in a SlaveActivitiy. This main activity is the master of all slaves, but has no ExecutionEngine. Some slaves have event ports because I also use them in other deployments running in a non-periodic activity which requires triggering. Every write into such an event port prints the above log message.
Possible solutions:
Remove the log message and let
SlaveActivity
ignore triggers silently if no master activity is set as it was before.I am aware of the problems this might cause for the original issue with blocking operation calls without a warning message. Perhaps as an alternative we could add a special handling in
bool ExecutionEngine::process(DisposableInterface* c )
that directly queues the messages in the master's ExecutionEngine if available instead of taking them over later from thetrigger()
call? I will setup a pull request for this if it sounds reasonable to you.Only allow an ExecutionEngine as master of SlaveActivities and clearly state that this is the only supported use case. This basically comes down to change the type of the
mmaster
member frombase::RunnableInterface *
toExecutionEngine *
and drop the dynamic_cast intrigger()
.The text was updated successfully, but these errors were encountered: