struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Benedict (JIRA)" <j...@apache.org>
Subject [jira] Updated: (STR-3110) PropertyUtils.clearDescriptors() call in ActionServlet.destroy() method is causing appliction classloader memory leak on Weblogic Portal
Date Wed, 07 Nov 2007 06:53:34 GMT

     [ https://issues.apache.org/struts/browse/STR-3110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Paul Benedict updated STR-3110:
-------------------------------

    Fix Version/s:     (was: 1.4.0)

> PropertyUtils.clearDescriptors() call in ActionServlet.destroy() method is causing appliction
classloader memory leak on Weblogic Portal
> ----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: STR-3110
>                 URL: https://issues.apache.org/struts/browse/STR-3110
>             Project: Struts 1
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.7
>         Environment: Weblogic Portal on windows
>            Reporter: Roopang Chauhan
>            Assignee: Paul Benedict
>             Fix For: 1.3.10
>
>
> PropertyUtils.clearDescriptors() is being called from ActionServlet.destroy() when undeploying
an appliction. This call is made after LogFactory.release(). LogFactory.release() removes
the application classloader instance from the LogFactory class. However PropertyUtils.clearDescriptors()
causes LogFactory.getFactory() to be invoked again:
> getFactory():218, org.apache.commons.logging.LogFactory
> getLog():351, org.apache.commons.logging.LogFactory
> <init>():130, org.apache.commons.beanutils.ConvertUtilsBean
> <init>():110, org.apache.commons.beanutils.BeanUtilsBean
> initialValue():68, org.apache.commons.beanutils.BeanUtilsBean$1
> get():80, org.apache.commons.beanutils.ContextClassLoaderLocal
> getInstance():78, org.apache.commons.beanutils.BeanUtilsBean
> getInstance():101, org.apache.commons.beanutils.PropertyUtilsBean
> clearDescriptors():121, org.apache.commons.beanutils.PropertyUtils
> destroy():308, org.apache.struts.action.ActionServlet
> This puts the application classloader instance back in the factories hashmap in LogFactory
after which it is never removed. This causes a leak. 
> I think that the PropertyUtils.clearDescriptors() call should be made before LogFactory.release()
and that should fix this problem. I just tried using an earlier version of struts without
the PropertyUtils.clearDescriptors() call and that solved the application classloader memory
leak.

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


Mime
View raw message