[kepler-dev] IOPortEvent bug

Colin Enticott Colin.Enticott at csse.monash.edu.au
Mon May 24 00:42:13 PDT 2010


Hi Christopher,

I'm having trouble again when I use the clone(Workspace) method again
on an active workflow. This time I am getting an exception when
evaluating an expression. The actor has an expression:
$a $b $c $d $e $f $g $h $i $j

The Parameter "a" refers to parameter "A" and likewise for the rest
(yes, this is a test workflow :-) ).

After the following code to clone the actor into a new workspace, I
get the following exception:

 _actor = (Actor)((Entity)_parentActor).clone(_workspace);
 _actor.setName(name);
 ((ComponentEntity)_actor).setContainer(tca);


ptolemy.kernel.util.IllegalActionException: Error evaluating
expression: $a $b $c $d $e $f $g $h $i $j
  in .ParameterDepend.String Constant_C2_TCA.String Constant_C2.value
Because:
The ID h is undefined.
  with tag colour {sequenceID=2, batchSize=1024, parameters={A = 1, B
= 1, C = 1, D = 1, E = 1, F = 1, G = 1, H = 1, I = 2, J = 1},
hashcode=-1226196380}
  in .ParameterDepend.String Constant_C2_TCA.String Constant_C2
	at ptolemy.data.expr.Variable.validate(Variable.java:1449)
	at ptolemy.kernel.util.NamedObj._validateSettables(NamedObj.java:2658)
	at ptolemy.kernel.Entity._validateSettables(Entity.java:651)
	at ptolemy.kernel.util.NamedObj.validateSettables(NamedObj.java:1972)
	at org.monash.nimrod.NimrodDirector.NimrodProcessThread._updateParameters(NimrodProcessThread.java:692)
	at org.monash.nimrod.NimrodDirector.NimrodProcessThread.run(NimrodProcessThread.java:389)


But if I change the code into this slower, more java memory hungry
version, it works:
        String s = ((Entity)_parentActor).exportMoML(name);
        MoMLChangeRequest l = new MoMLChangeRequest(this, tca, s);
        l.execute();
        _actor = (Actor)tca.getEntity(name);

Looking at the code for th Variable class, it is hard for me to tell
what isn't being updated. The best guess I have is I can't see
_parseTreeEvaluator being reset in the clone(Workspace) method. The
_parseTreeEvaluator holds onto state including a "ParserScope". Could
this be the problem?

Or is it something else I am doing?

Thanks,
Colin


On 4 January 2010 05:04, Christopher Brooks <cxh at eecs.berkeley.edu> wrote:
> Hi Colin,
> Thanks, I wrote a test that illustrates this problem and then
> fixed it.
>
> The test is
>
> test NamedObj-8.1.0 {clone should not have _debugListener set} {
>    set n [java::new ptolemy.kernel.util.Workspace "N"]
>    set a [java::new ptolemy.kernel.util.NamedObj $n "A" ]
>    set listener [java::new ptolemy.kernel.util.RecorderListener]
>    $a addDebugListener $listener
>    set b [java::cast ptolemy.kernel.util.NamedObj [$a clone]]
>    set listenerB [java::new ptolemy.kernel.util.RecorderListener]
>    $b addDebugListener $listenerB
>    $b setName B
>    $b clone
>    list [$listener getMessages] \
>        [$listenerB getMessages]
> } {{Cloned .A into workspace: N
> } {Changed name from .A to .B
> Cloned .B into workspace: N
> }}
>
>
> Before the fix, the result was:
>
> {Cloned .A into workspace: N
> Changed name from .A to .B
> Cloned .B into workspace: N
> } {Changed name from .A to .B
> Cloned .B into workspace: N
> }
>
> which indicates that the listener to A is getting messages intended for B.
>
> _Christopher
>
> On 12/28/09 9:15 PM, Colin Enticott wrote:
>>
>> Hi Christopher,
>>
>> Along the same lines as this old bug, it seems _debugListeners is not
>> being nulled on the new object after clone(Workspace) is called.
>>
>> It's funny I noticed problems with debugging after two years working
>> with Kepler. It's obvious I don't debug my code enough ;-)
>>
>> Oh, I'm still working with Kepler-1.0.0. If this has been fixed since,
>> I apologise.
>>
>> Kind regards,
>> Colin
>>
>> 2008/2/23 Colin Enticott<Colin.Enticott at infotech.monash.edu.au>:
>>>
>>> Thanks Dan and Christoper.  Works a treat.
>>>
>>> Colin
>>>
>>> -----Original Message-----
>>> From: cxh at eecs.berkeley.edu [mailto:cxh at eecs.berkeley.edu]
>>> Sent: Saturday, 23 February 2008 6:14 AM
>>> To: Daniel Crawl
>>> Cc: Colin Enticott; Kepler-Dev
>>> Subject: Re: [kepler-dev] IOPortEvent bug
>>>
>>> Done!
>>>
>>>
>>> cxh at carson 192% cvs diff -D yesterday IOPort.java
>>> Index: IOPort.java
>>> ===================================================================
>>> RCS file: /home/cvs/ptII/ptolemy/actor/IOPort.java,v
>>> retrieving revision 1.260
>>> retrieving revision 1.261
>>> diff -r1.260 -r1.261
>>> 129c129
>>> <    @version $Id: IOPort.java,v 1.260 2008/02/19 18:25:47 cxh Exp $
>>> ---
>>>>
>>>>  @version $Id: IOPort.java,v 1.261 2008/02/22 19:11:58 cxh Exp $
>>>
>>> 420a421,424
>>>>
>>>>         newObject._hasPortEventListeners = false;
>>>>         newObject._portEventListeners = null;
>>>>
>>> cxh at carson 193%
>>>
>>> On my todo list is to write some tests for the IOPortListener
>>> code.
>>>
>>> _Christopher
>>>
>>> --------
>>>
>>>
>>>    Hi Colin,
>>>
>>>    The cloned IOPort's listener list should be set to null. Since
>>>    Kepler CVS no longer has a separate copy of IOPort.java, could
>>>    someone make this change in ptII CVS?
>>>
>>>    Thanks,
>>>
>>>      --dan
>>>
>>>    Colin Enticott wrote:
>>>    >  Hi all,
>>>    >
>>>    >  I was having trouble with my code and I have narrowing it down to
>>>    >  IOPortEvents feature.  There appears to be a bug in the IOPort
>>> class
>>> with
>>>    >  IOPortEvent feature and cloning.  It looks like if there has been
>>> an
>>>    >  IOPortEventListener added, when it is cloned, all the clones will
>>> have
>>> a
>>>    >  reference to the same listener list.  I guess the list itself
>>> should
>>> be
>>>    >  cloned or the clone's list reference should be set back to null.
>>>    >
>>>    >  It is possible if someone could have a look at this?
>>>    >
>>>    >  Thanks,
>>>    >  Colin
>>>    >
>>>    >  _______________________________________________
>>>    >  Kepler-dev mailing list
>>>    >  Kepler-dev at ecoinformatics.org
>>>    >
>>> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev
>>>    >
>>>
>>>    _______________________________________________
>>>    Kepler-dev mailing list
>>>    Kepler-dev at ecoinformatics.org
>>>
>>>  http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev
>>> --------
>>>
>>> _______________________________________________
>>> Kepler-dev mailing list
>>> Kepler-dev at ecoinformatics.org
>>> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev
>>>
>>
>>
>>
>
> --
> Christopher Brooks, PMP                       University of California
> CHESS Executive Director                      US Mail: 337 Cory Hall
> Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
> ph: 510.643.9841 fax:510.642.2718             (Office: 545Q Cory)
> home: (F-Tu) 707.665.0131 cell: 707.332.0670
>



-- 
Colin


More information about the Kepler-dev mailing list