eclipselabs/passerelle

ErrorHandler actors terminate too quickly in thread-based executions of models with loops

Closed this issue · 2 comments

What steps will reproduce the problem?
1. Define a model with a loop and an ExceptionGenerator.
   Use an ErrorHandler actor to catch the exception.
   (cfr attached model)
2. Run it

What is the expected output? What do you see instead?
The ErrorHandler should receive the generated error and e.g. send it onwards in 
an error handling branch.

But it often happens that the model terminates too quickly and the ErrorHandler 
has wrapped up before receiving the exception.

The problem is common for daemon actors. 
In models with loops they may terminate too quickly.

The root cause is in DirectorUtils.getActiveActorsWithoutInputs() and its usage 
in Process/CapDirector.removeThread(), which is invoked each time an actor 
terminates in a thread-based execution model.

Loops are not correctly handled there.


Original issue reported on code.google.com by erwin...@gmail.com on 4 May 2014 at 6:41

Attachments:

fix done with impact on :
ProcessDirector, CapDirector, DirectorUtils

Original comment by erwin...@gmail.com on 4 May 2014 at 7:33

  • Changed state: Fixed
checked by Olof in DAWN

Original comment by erwin...@gmail.com on 5 May 2014 at 2:51

  • Changed state: Verified