[kepler-users] Problem with PN director

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


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
>>>
>>
>
-------------- 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/ffc85828/attachment.vcf>


More information about the Kepler-users mailing list