ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ciaran Jessup (JIRA)" <j...@apache.org>
Subject [jira] Updated: (ODE-574) Memory leak when Un-deploying processes that contain XSL stylesheets
Date Thu, 09 Apr 2009 12:23:12 GMT

     [ https://issues.apache.org/jira/browse/ODE-574?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Ciaran Jessup updated ODE-574:

    Attachment: memory-leak-all-in-one-2.patch

This patch has been re-generated against the latest SVN HEAD. It does the following:

1) Adds a synchronisation block around the templates removeAll call.
2) Adds a call to purge just after an oProcess has been compiled.
3) In my previous patch I very deliberately didn't set the 'ErrorListener' to null as my reading
of the java specification in this area suggests that doing that should cause a null-pointer,
I'm unsure that it is safe to do what the current SVN HEAD does, but I'm happy to be shown
to be wrong :)

I still don't really understand why purging based on the filepath was a bad idea, as these
are file-based resources that are being deleted, however I'll bow down to your expertise and
better judgement,   I'm sure you're aware that the current version will delete cached resources
for *all* versions of a given process, wheras the original patch was a little more fine-grained
<g>, but the important thing for me is, with the above changes I no-longer leak memory
on deply-undeploy cycles, and I use less on a deploy (freeing up references allows the GC
to collect if it needs to mid deploy, otherwise you can twice as much in memory as you need
to )

> Memory leak when Un-deploying processes that contain XSL stylesheets
> --------------------------------------------------------------------
>                 Key: ODE-574
>                 URL: https://issues.apache.org/jira/browse/ODE-574
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Compilation/Parsing, BPEL Runtime
>         Environment: N/A
>            Reporter: Ciaran Jessup
>         Attachments: cleanup-xsl-cache.patch, memory-leak-all-in-one-2.patch, memory-leak-all-in-one.patch
> Currently if the BPEL process contains any XSL stylesheets it will not free up *all*
the memory that was allocated during the compilation/dehydration of the process.  This seems
to be because there is a cache of XSLTemplates stored in the XSLTransformHandler, and these
XSLTemplates can sometimes contain (transitive) references back to the OProcess object instances
(via for example the URIResolvers/XPAth Expressions).   Unfortunately this cache lives forever
(crucially even after the process has been un-deployed)  because of this the object graph
hanging from the OProcess object instance is never available for the GC to pick-off.
> There is also another reference issue in the ErrorListener that is associated with the
XSLTransformHandler instance, but I don't really understand that bit of code just as yet,
a patch for the former issue follows, I'm reviewing the ErrorListener issue currently.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message