Community
Participate
Working Groups
Aborting a controller does not currently destroy the capsules owned by the controller.
Investigate requirements to fully understand. Static and optional instances belong to the controller and need to be destroyed. Only imported capsules must be left untouched (and an "unbound" signal sent).
For the 1.0 release, we should simply destroy the complete application and restart it. We will revisit this post 1.0 and decide what the fault recovery strategy should be.
New Gerrit change created: https://git.eclipse.org/r/73653
Gerrit change https://git.eclipse.org/r/73653 was merged to [master]. Commit: http://git.eclipse.org/c/papyrus-rt/org.eclipse.papyrus-rt.git/commit/?id=f15c98a82292159376c5a2027bf35fe14a3eded4
The commit in Comment 4 is a partial solution to the bug and will be the only run-time changes for Release 1. Two 'normal exit' methods are added to the UMLRTController API. These take an 'exit value' that the controller thread returns on exit. The application terminates when either API is invoked from any controller. The abort methods (abort() and abortAllControllers()) cause the controller to return EXIT_FAILURE as their 'exit value'. The application terminates when either API is invoked from any controller. If the user enables the MODEL debug type (e.g. -Tmodel), debug logs containing the current instance model and any queued messages will be written to standard output when the user invokes either of the abort API from any controller. The generated main function that waits on all controllers (via join) needs to be modified in order to have the application exit with the user-defined exit value passed to the exit APIs.
This should not happen very often. Moving to future.