You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Karl Pauls (JIRA)" <ji...@apache.org> on 2017/05/03 21:19:04 UTC

[jira] [Resolved] (SLING-6640) Race condition in JCR Contentloader deactivate can cause NullPointerException.

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

Karl Pauls resolved SLING-6640.
-------------------------------
    Resolution: Fixed

Fixed in r1793718.

> Race condition in JCR Contentloader deactivate can cause NullPointerException.
> ------------------------------------------------------------------------------
>
>                 Key: SLING-6640
>                 URL: https://issues.apache.org/jira/browse/SLING-6640
>             Project: Sling
>          Issue Type: Bug
>          Components: JCR
>    Affects Versions: JCR ContentLoader 2.1.10
>            Reporter: Karl Pauls
>            Assignee: Karl Pauls
>             Fix For: JCR ContentLoader 2.2.0
>
>
> The ContentLoaderService registers itself as a SynchronousBundleListener with the framework on activate and unregisters in the deactivate method. After it unregistered it turns around and first calls:
> this.bundleContentLoader.dispose();
> and then the bundleContentLoader is set to null. The bundleContentLoader is used in the bundleChanged(BundleEvent) callback of the listener interface. 
> There seems to be an assumption that there will be no more events received after the unregistering as a listener - however, that assumption doesn't hold. The framework gets a snapshot of listeners and calls them so there is a window where bundleChanged can be invoked after the call to bundleContentLoader.dispose() or after it is set to null. 
> Both cases can lead to an NPE (either in the bundleChanged directly because the bundleContentLoader is null already or inside the bundleContentLoader itself as it has been disposed) when there is a race between the service being deactivated and a bundle changing state concurrently. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)