[ https://issues.apache.org/jira/browse/COCOON-2259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thorsten Scherler updated COCOON-2259: -------------------------------------- Assignee: Thorsten Scherler (was: Jasha Joachimsthal) > Memory leak in PoolableProxyHandler > ----------------------------------- > > Key: COCOON-2259 > URL: https://issues.apache.org/jira/browse/COCOON-2259 > Project: Cocoon > Issue Type: Bug > Components: * Cocoon Core > Affects Versions: 2.2, 2.2-dev (Current SVN) > Reporter: Alexander Daniel > Assignee: Thorsten Scherler > Fix For: 2.2-dev (Current SVN) > > Attachments: patchForIssue2259.txt > > > I reproduced the problem with following pipeline and by adding log output to > PoolableProxyHandler [1] > <map:pipeline id="cocoonTest" type="noncaching"> > <map:match pattern="cocoonProtocol"> > <map:generate src="cocoon://sub"/> > <map:serialize type="xhtml"/> > </map:match> > <map:match pattern="sub"> > <map:generate src="welcome/welcome.xml"/> > <map:transform src="welcome/welcome.xslt"/> > <map:serialize type="xhtml"/> > </map:match> > </map:pipeline> > Changing the line > this.attributeName = PoolableProxyHandler.class.getName() + '/' + > this.handler.hashCode(); > to > this.attributeName = PoolableProxyHandler.class.getName() + '/' + > this.hashCode(); > fixes the memory leak. > Why? The PoolableFactoryBean [2] handler is a singleton for every pipeline > component, i.e. one instance for noncaching pipeline, one instance for xalan > transformer, ... Therefore the attributeName is the same for every component > of the same type but Spring requires an unique value for the destruction > callback handler. > In the example sitemap above two noncaching pipeline instances are needed for > processing the request. Both call registerDestructionCallback with the same > attributeName. Because the attributeName is the same the callback is only > called once and the other component remains in ThreadLocal. > [1] > http://svn.apache.org/repos/asf/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/core/container/spring/avalon/PoolableProxyHandler.java > [2] > http://svn.apache.org/repos/asf/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/core/container/spring/avalon/PoolableFactoryBean.java -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira