[
https://issues.apache.org/jira/browse/SLING-11498?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17597063#comment-17597063
]
Carsten Ziegeler commented on SLING-11498:
------------------------------------------
The idea behing the "initializing" lock was to handle this situation. All
change operations require to get the lock as well as dispose is trying to get
it.
However, it seems not all methods check whether this.resolver is null after
they got the lock, part of the code does.
> Race condition in MapEntries: Resource resolver is already closed (Error
> while dispatching observation events for
> //*[11111b]@org.apache.sling.jcr.resource.internal.JcrResourceListener
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: SLING-11498
> URL: https://issues.apache.org/jira/browse/SLING-11498
> Project: Sling
> Issue Type: Bug
> Components: ResourceResolver
> Affects Versions: Resource Resolver 1.7.10
> Reporter: Henry Kuijpers
> Priority: Major
>
> It seems that there is a race condition and/or unexpected condition in
> MapEntries.
> This class also seems to be receiving notifications for events that it does
> not seem to be interested in (//*[1111b]@....)
> This seems to be somewhat related to SLING-7019 and SLING-4756.
> {noformat}
> 27.07.2022 06:44:41.370 *WARN* [sling-oak-observation-4]
> org.apache.jackrabbit.oak.jcr.observation.ChangeProcessor Error while
> dispatching observation events for
> //*[11111b]@org.apache.sling.jcr.resource.internal.JcrResourceListener
> java.lang.IllegalStateException: Resource resolver is already closed.
> at
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.checkClosed(ResourceResolverImpl.java:196)
> [org.apache.sling.resourceresolver:1.7.10]
> at
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.getResource(ResourceResolverImpl.java:447)
> [org.apache.sling.resourceresolver:1.7.10]
> at
> org.apache.sling.resourceresolver.impl.mapping.MapEntries.updateResource(MapEntries.java:280)
> [org.apache.sling.resourceresolver:1.7.10]
> at
> org.apache.sling.resourceresolver.impl.mapping.MapEntries.onChange(MapEntries.java:747)
> [org.apache.sling.resourceresolver:1.7.10]
> at
> org.apache.sling.resourceresolver.impl.observation.BasicObservationReporter.reportChanges(BasicObservationReporter.java:211)
> [org.apache.sling.resourceresolver:1.7.10]
> at
> org.apache.sling.jcr.resource.internal.JcrResourceListener.onEvent(JcrResourceListener.java:155)
> [org.apache.sling.jcr.resource:3.0.18]
> at
> org.apache.jackrabbit.commons.observation.ListenerTracker$1.onEvent(ListenerTracker.java:190)
> [org.apache.jackrabbit.jackrabbit-jcr-commons:2.20.4]
> at
> org.apache.jackrabbit.oak.jcr.observation.ChangeProcessor.contentChanged(ChangeProcessor.java:513)
> [org.apache.jackrabbit.oak-jcr:1.22.11]
> at
> org.apache.jackrabbit.oak.plugins.observation.FilteringDispatcher.contentChanged(FilteringDispatcher.java:52)
> [org.apache.jackrabbit.oak-core:1.22.11]
> at
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:127)
> [org.apache.jackrabbit.oak-store-spi:1.22.11]
> at
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:121)
> [org.apache.jackrabbit.oak-store-spi:1.22.11]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)