Bug 468521 - [runtime] controller abort does not destroy owned capsules
Summary: [runtime] controller abort does not destroy owned capsules
Status: NEW
Alias: None
Product: Papyrus-rt
Classification: Modeling
Component: runtime (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 normal
Target Milestone: Future   Edit
Assignee: Simon Redding CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-27 13:44 EDT by Barry Maher CLA
Modified: 2017-06-12 09:43 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Barry Maher CLA 2015-05-27 13:44:19 EDT
Aborting a controller does not currently destroy the capsules owned by the controller.
Comment 1 Charles Rivet CLA 2016-02-05 14:21:06 EST
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).
Comment 2 Simon Redding CLA 2016-03-17 08:13:16 EDT
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.
Comment 3 Eclipse Genie CLA 2016-05-25 15:14:11 EDT
New Gerrit change created: https://git.eclipse.org/r/73653
Comment 5 Barry Maher CLA 2016-06-10 10:42:33 EDT
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.
Comment 6 Charles Rivet CLA 2017-06-12 09:43:39 EDT
This should not happen very often. Moving to future.