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

Justin Edelson updated SLING-7517:
----------------------------------
    Description: 
The functionality added in SLING-5668 to dispose of OSGi services (or anything 
else needing disposal when creating a Sling Model object) based on the 
ServletRequest lifecycle only works if the ServletRequest object was actually 
created by the ServletContext. In some cases, applications make construct 
"fake" request object (primarily for use with SlingRequestProcessor). In these 
cases, since the ServletContext didn't create these requests, it won't call the 
requestDestroyed method when they are complete.

 

The easiest way to resolve this is to only apply the special behavior in 
SLING-5668 to request objects actually created by the ServletContext and use 
the general-purpose ReferenceQueue method for all other requests (and all other 
adaptables).

 

The fix in SLING-7470 was incomplete and only addressed class-based models. 
Interface-based models were not fixed.

  was:
The functionality added in SLING-5668 to dispose of OSGi services (or anything 
else needing disposal when creating a Sling Model object) based on the 
ServletRequest lifecycle only works if the ServletRequest object was actually 
created by the ServletContext. In some cases, applications make construct 
"fake" request object (primarily for use with SlingRequestProcessor). In these 
cases, since the ServletContext didn't create these requests, it won't call the 
requestDestroyed method when they are complete.

 

The easiest way to resolve this is to only apply the special behavior in 
SLING-5668 to request objects actually created by the ServletContext and use 
the general-purpose ReferenceQueue method for all other requests (and all other 
adaptables).


> CLONE - Memory Leak for "fake" Request objects in ModelAdapterFactory
> ---------------------------------------------------------------------
>
>                 Key: SLING-7517
>                 URL: https://issues.apache.org/jira/browse/SLING-7517
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: Sling Models Impl 1.4.6
>            Reporter: Justin Edelson
>            Assignee: Justin Edelson
>            Priority: Critical
>             Fix For: Sling Models Impl 1.4.8
>
>
> The functionality added in SLING-5668 to dispose of OSGi services (or 
> anything else needing disposal when creating a Sling Model object) based on 
> the ServletRequest lifecycle only works if the ServletRequest object was 
> actually created by the ServletContext. In some cases, applications make 
> construct "fake" request object (primarily for use with 
> SlingRequestProcessor). In these cases, since the ServletContext didn't 
> create these requests, it won't call the requestDestroyed method when they 
> are complete.
>  
> The easiest way to resolve this is to only apply the special behavior in 
> SLING-5668 to request objects actually created by the ServletContext and use 
> the general-purpose ReferenceQueue method for all other requests (and all 
> other adaptables).
>  
> The fix in SLING-7470 was incomplete and only addressed class-based models. 
> Interface-based models were not fixed.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to