[kepler-users] Problem with PN director

Colin Enticott Colin.Enticott at infotech.monash.edu.au
Wed Jun 22 07:02:10 PDT 2011


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> 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
> http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/attachments/20110623/91b7d047/attachment.html>


More information about the Kepler-users mailing list