You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2015/04/27 12:24:38 UTC

[jira] [Commented] (OAK-2811) Oak + data store: NPE in SegmentNodeStoreService.deactivate() leads to data store not shutting down properly

    [ https://issues.apache.org/jira/browse/OAK-2811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14513866#comment-14513866 ] 

Alex Parvulescu commented on OAK-2811:
--------------------------------------

one way the _ observerTracker_ would be null is if the SegmentNodeStoreService has the _customBlob_ flag set, and because the specific service is not available yet, the _#registerNodeStore_ was not been called yet when the _#deactivate_ call happens. so I agree we need NPE guards here.
this being said, I think the store will also be null at this point so I don't see how it would help this situation (the _store.close_ call will not happen).

> Oak + data store: NPE in SegmentNodeStoreService.deactivate() leads to data store not shutting down properly
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: OAK-2811
>                 URL: https://issues.apache.org/jira/browse/OAK-2811
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segmentmk
>    Affects Versions: 1.2
>            Reporter: Alexander Klimetschek
>             Fix For: 1.3.0
>
>
> For some reason, on shutdown of a system, the {{observerTracker}} in the SegmentNodeStoreService became null before deactivate() was called, leading to this NPE on [line 404|https://github.com/apache/jackrabbit-oak/blob/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java#L404]:
> {noformat}
> 24.04.2015 13:20:55.960 *ERROR* [FelixStartLevel] org.apache.jackrabbit.oak-core [org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService(87)] The deactivate method has thrown an exception (java.lang.NullPointerException)
> java.lang.NullPointerException: null
> 	at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.deactivate(SegmentNodeStoreService.java:404)
> 	... just reflection and apache felix code on shutdown
> {noformat}
> This in turn lead to the datastore not being closed ([4 lines later|https://github.com/apache/jackrabbit-oak/blob/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java#L408]).
> In our case we used the CachingDataStore, which relies on close() being called, if not it triggers JCR-3873, which prevents the system from starting up again.
> In any case, the NPE should be guarded.



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