[
https://issues.apache.org/jira/browse/SLING-5068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14933363#comment-14933363
]
Carsten Ziegeler commented on SLING-5068:
-----------------------------------------
If I see it correctly, this is what happens:
- first request for servlet A comes in, servlet A gets instanciated with the
per thread RR of that thread
- for that request ATTR_SCRIPT_RESOURCE_RESOLVER is set to the per threat RR
- for every other request, ATTR_SCRIPT_RESOURCE_RESOLVER is set to exactly that
per threat RR as well
If we move setting ATTR_SCRIPT_RESOURCE_RESOLVER out of the DefaultSlingScript
(which is shared singleton) we can set it to the correct per thread RR on each
request. I hope I did not overlook the something
> perThreadScriptResolver is shared between multiple Threads causing ISE in
> ResourceResolverImpl
> ----------------------------------------------------------------------------------------------
>
> 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
> Attachments: error-stacktrace.txt, opened-and-closed-trace.txt
>
>
> 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)