The following comment has been added to this issue:

     Author: Hans Gilde
    Created: Sun, 12 Sep 2004 4:11 PM
       Body:
Having looked at this some more, this TagScript should not clear its cache after run().

The cache reuses a Tag implementation between several runs of the same script, in the 
same thread. It does not reuse the same Tag implementation multiple times within the 
same script.

The cache is a ThreadLocal object that is a member variable of TagScript. A seperate 
TagScript object is always created for every instance of a tag encountered in an XML 
document. So, there is no choice but to have a Tag implementation for every XML 
element in the document.

What the cache does do is ensure that the second time you run the script in the same 
thread, it will not create a second set of Tag implementations.
---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/JELLY-85?page=comments#action_53051

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JELLY-85

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JELLY-85
    Summary: TagScript doesn't clear its cached tags after run()
       Type: Bug

     Status: Unassigned
   Priority: Major

    Project: jelly
 Components: 
             core / taglib.core
   Versions:
             1.0-beta-4

   Assignee: 
   Reporter: Scott Howlett

    Created: Tue, 16 Sep 2003 8:16 PM
    Updated: Sun, 12 Sep 2004 4:11 PM

Description:
TagScript caches the tags it generates in a ThreadLocal. At the beginning of run() it 
checks to see if the context wants to cache tags - if not, it clears the cache and 
regenerates it.

But there is no corresponding check and cache clearing at the end of run(). So if a 
tag holds onto some significant resource, that resource will hang around until the 
thread goes away or until the tag is run again.

I am using Jelly Swing extensively, and various tags end up attached to the AWT Event 
thread for the lifetime of my application.

As a quick fix, I have a patch that simply repeats the check-and-clear-cache behavior 
at the end of TagScript.run(). I also have a patch that adds this behavior to 
StaticTagScript, whose run() never seems to clear cached tags.

I am probably just unclear, but it seems to me that there is a deeper issue as well - 
the context is being asked whether it wants to cache tags, but the result of this 
question affects the TagScript, which is really independent of the context. It seems 
like if context wants to cache tags, perhaps the ThreadLocal used for their storage 
ought to belong to the context somehow.


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to