[kepler-users] Problem with PN director

Edward A. Lee eal at eecs.berkeley.edu
Wed Jun 22 07:14:06 PDT 2011


Ah, right. Actually, if you don't rethrow the exception,
the thread won't terminate...

Edward


On 6/22/11 7:02 AM, Colin Enticott wrote:
> It might be best to re-throw the exception in case the method is
> expanded on. That is:
>
> } catch (Exception e) {
>     if (!(e instanceof TerminateProcessExeption)) {
>        e.printStackTrace();
>        throw new IllegalActionException(this, e, e.getMessage());
>     }
>
>     else
>
>        throw e;
> }
>
>
> Colin
>
> On 22 June 2011 23:23, Edward A. Lee <eal at eecs.berkeley.edu
> <mailto:eal at eecs.berkeley.edu>> wrote:
>
>
>     The offending lines are these:
>
>                     } catch (Exception e) {
>                             e.printStackTrace();
>                             throw new
>     IllegalActionException(e.__getMessage());
>                     }
>
>
>     The issue is that in PN, the fire() method is invoked in an infinite
>     loop in its own thread. The get() method blocks until there is input
>     available. When the PN director detects that there are no more
>     tokens to process, it causes to get() to throw a
>     TerminateProcessException.  It would not work for get() to just
>     return, because then the infinite loop would continue and the thread
>     would never terminate.
>
>     You could change this to:
>
>     } catch (Exception e) {
>        if (!(e instanceof TerminateProcessExeption)) {
>           e.printStackTrace();
>           throw new IllegalActionException(e.__getMessage());
>        }
>     }
>
>     Note further that it would be better to replace
>
>           throw new IllegalActionException(e.__getMessage());
>
>     with
>
>           throw new IllegalActionException(this, e, e.getMessage());
>
>     This will cause the offending actor to be highlighted, and the chain
>     of exception stack traces to be shown. It makes it unnecessary to
>     do this:
>
>           e.printStackTrace();
>
>     Edward
>
>
>
>
>     On 6/22/11 1:07 AM, Vincenzo Forchi wrote:
>
>         Hi Christopher,
>
>         I think I'm doing some weird mistake, but I don't understand why the
>         other actors I wrote work. Anyway, here's the (stripped down)
>         actor that
>         doesn't work and the model.
>
>         Cheers,
>         Vincenzo
>
>         On 21/06/2011 17:32, Christopher Brooks wrote:
>
>             Hi Vincenzo,
>             Do you have a small test actor and sample model?
>
>             _Christopher
>
>             On 6/21/11 8:05 AM, Vincenzo Forchi wrote:
>
>                 Hi Edward,
>
>                 On 21/06/2011 16:53, Edward A. Lee wrote:
>
>                     Something's fishy here.
>                     Such a model should work fine in PN.
>                     Note that hasToken() _alaways_ returns true in PN.
>
>                 That's good to know, I completely missed that
>
>                     The get() method blocks when there is no input.
>
>                 Apparently in this case it doesn't, but why is the fire even
>                 triggered in the first place?
>
>                     Looks like something is terminating the threads
>                     using a TerminateProcessException. How is your model
>                     supposed to be stopped?
>
>                 When all the tokens have been consumed, which works for
>                 most of my
>                 actors with the PN and for all
>                 of them with the DDF.
>
>                 Cheers,
>                 Vincenzo
>
>
>
>
>     _______________________________________________
>     Kepler-users mailing list
>     Kepler-users at kepler-project.org <mailto:Kepler-users at kepler-project.org>
>     http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eal.vcf
Type: text/x-vcard
Size: 330 bytes
Desc: not available
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/attachments/20110622/88dd382b/attachment.vcf>


More information about the Kepler-users mailing list