Dirk Rudolph created SLING-5068:
-----------------------------------

             Summary: perThreadScriptResolver is shared between multiple Threads
                 Key: SLING-5068
                 URL: https://issues.apache.org/jira/browse/SLING-5068
             Project: Sling
          Issue Type: Bug
          Components: Servlets
    Affects Versions: Servlets Resolver 2.3.6
         Environment: We facing the following issue with AEM 6.1 build on top 
of Servlet Resolver 2.3.6.
            Reporter: Dirk Rudolph
            Priority: Critical


We are building a single page application that loads small markup pieces in 
several subsequent requests. For each request the same rendering applies and so 
the same script is used.

When cleaning the ServletResolvers internal cache we get a lot of ISE 
("Resource resolver is already closed") which seems to be because the 
ResourceResolver is used in multiple Threads. 

The problem seems to be that the first request creates an entry in the servlet 
resolvers cache with a servlet that sets the perThreadScriptResolver of this 
request/thread to the context. This entry is reused in another thread. When now 
the first one finishes the processing the perThreadScriptResolver gets closed 
in the onEvent method of ServletResolver but is still used in the ScriptContext 
of another Thread. 

See the attached Exceptions we got by adding some trace logging to the 
ResourceResolverImpl (1.2.4). It proves that it is the perThreadScriptResolver 
and not the shared one that causes the problem.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to