jackrabbit-oak-issues mailing list archives

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

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

Chetan Mehrotra edited comment on OAK-6294 at 6/2/17 9:48 AM:
--------------------------------------------------------------

The patch creates a scenario which is not possible via using NodeStore api. So it would be
better to first come up with a scenario which leads to such a case. For now I would consider
this patch a workaround and it would hide surfacing the actual problem. Technically here we
should be throwing an IllegalStateException as its not confirming to the invariants of the
applyLogic

So lets see if we can come up with some scenario for this and then only apply the patch


was (Author: chetanm):
The patch creates a scenario which is not possible via using NodeStore api. So it would be
better to first come up with a scenario which leads to such a case. For now I would consider
this patch a workaround and it would hide surfacing the actual problem.

So lets see if we can come up with some scenario for this and then only apply the patch

> 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
>              Labels: candidate_oak_1_4, candidate_oak_1_6
>             Fix For: 1.8, 1.7.1
>
>         Attachments: OAK-6294.patch
>
>
> 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).
> //cc: [~chetanm], [~mreutegg], [~catholicon]



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

Mime
View raw message