jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tomek Rękawek (JIRA) <j...@apache.org>
Subject [jira] [Commented] (OAK-6294) The "missing" node cache value breaks the DocumentNodeStore#applyChanges
Date Fri, 02 Jun 2017 09:33:04 GMT

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

Tomek Rękawek commented on OAK-6294:

It's worth to note that we shouldn't run across the {{missing}} objects there, as the code
is only being run for the already existing nodes (isNew=false). Therefore, the beforeState
should exists for the node and all its ancestors. This may indicate some underlying bug, probably
around the Commit class.

> The "missing" node cache value breaks the DocumentNodeStore#applyChanges
> ------------------------------------------------------------------------
>                 Key: OAK-6294
>                 URL: https://issues.apache.org/jira/browse/OAK-6294
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: documentmk
>    Affects Versions: 1.4.10
>            Reporter: Tomek Rękawek
>             Fix For: 1.8
> In the {{DocumentNodeStore#nodeCache}}, the special object {{missing}} is being used
to mark the node entries that don't exists in the repository.
> This object should be unwrapped to {{null}} every time we call {{nodeCache#getIfPresent()}}
method. It's not the case in the {{applyChanges()}} method - as a result, we may get a NPE
(since the {{missing.getLastRev() == null}}):
> {noformat}
> Caused by: java.lang.NullPointerException: null
> 	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:192)
> 	at org.apache.jackrabbit.oak.plugins.document.PathRev.<init>(PathRev.java:40)
> 	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.applyChanges(DocumentNodeStore.java:1171)
> 	at org.apache.jackrabbit.oak.plugins.document.Commit.applyToCache(Commit.java:667)
> 	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$3.headOfQueue(DocumentNodeStore.java:674)
> 	at org.apache.jackrabbit.oak.plugins.document.CommitQueue.waitUntilHeadOfQueue(CommitQueue.java:240)
> 	at org.apache.jackrabbit.oak.plugins.document.CommitQueue.done(CommitQueue.java:92)
> 	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.done(DocumentNodeStore.java:668)
> {noformat}
> (taken from the production instance running the Oak 1.4.10).

This message was sent by Atlassian JIRA

View raw message