<p>It might be best to re-throw the exception in case the method is expanded on. That is:</p><p> </p><p>} catch (Exception e) {<br>   if (!(e instanceof TerminateProcessExeption)) {<br>      e.printStackTrace();<br>      throw new IllegalActionException(this, e, e.getMessage());<br>
   }</p><p>   else</p><p>      throw e;<br>}</p><p><br>Colin<br><br></p><div class="gmail_quote">On 22 June 2011 23:23, Edward A. Lee <span dir="ltr"><<a href="mailto:eal@eecs.berkeley.edu">eal@eecs.berkeley.edu</a>></span> wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote"><br>
The offending lines are these:<br>
<br>
                } catch (Exception e) {<br>
                        e.printStackTrace();<br>
                        throw new IllegalActionException(e.<u></u>getMessage());<br>
                }<br>
<br>
<br>
The issue is that in PN, the fire() method is invoked in an infinite<br>
loop in its own thread. The get() method blocks until there is input<br>
available. When the PN director detects that there are no more<br>
tokens to process, it causes to get() to throw a<br>
TerminateProcessException.  It would not work for get() to just<br>
return, because then the infinite loop would continue and the thread<br>
would never terminate.<br>
<br>
You could change this to:<br>
<br>
} catch (Exception e) {<br>
   if (!(e instanceof TerminateProcessExeption)) {<br>
      e.printStackTrace();<br>
      throw new IllegalActionException(e.<u></u>getMessage());<br>
   }<br>
}<br>
<br>
Note further that it would be better to replace<br>
<br>
      throw new IllegalActionException(e.<u></u>getMessage());<br>
<br>
with<br>
<br>
      throw new IllegalActionException(this, e, e.getMessage());<br>
<br>
This will cause the offending actor to be highlighted, and the chain<br>
of exception stack traces to be shown. It makes it unnecessary to<br>
do this:<br>
<br>
      e.printStackTrace();<br><font color="#888888">
<br>
Edward</font><div><div></div><div class="h5"><br>
<br>
<br>
<br>
On 6/22/11 1:07 AM, Vincenzo Forchi wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
Hi Christopher,<br>
<br>
I think I'm doing some weird mistake, but I don't understand why the<br>
other actors I wrote work. Anyway, here's the (stripped down) actor that<br>
doesn't work and the model.<br>
<br>
Cheers,<br>
Vincenzo<br>
<br>
On 21/06/2011 17:32, Christopher Brooks wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
Hi Vincenzo,<br>
Do you have a small test actor and sample model?<br>
<br>
_Christopher<br>
<br>
On 6/21/11 8:05 AM, Vincenzo Forchi wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
Hi Edward,<br>
<br>
On 21/06/2011 16:53, Edward A. Lee wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
Something's fishy here.<br>
Such a model should work fine in PN.<br>
Note that hasToken() _alaways_ returns true in PN.<br>
</blockquote>
That's good to know, I completely missed that<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
The get() method blocks when there is no input.<br>
</blockquote>
Apparently in this case it doesn't, but why is the fire even<br>
triggered in the first place?<br>
<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
Looks like something is terminating the threads<br>
using a TerminateProcessException. How is your model<br>
supposed to be stopped?<br>
</blockquote>
When all the tokens have been consumed, which works for most of my<br>
actors with the PN and for all<br>
of them with the DDF.<br>
<br>
Cheers,<br>
Vincenzo<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
</div></div><br>_______________________________________________<br>
Kepler-users mailing list<br>
<a href="mailto:Kepler-users@kepler-project.org">Kepler-users@kepler-project.org</a><br>
<a href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users" target="_blank">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a><br>
<br></blockquote></div><br>