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

Tomek Rękawek commented on OAK-6486:
------------------------------------

It seems that the NPE is caused by the CopyOnReadIdentityMap, which isn't 
thread safe and sometimes returns null even if the value is in the original 
map. It was introduced to provide a lazy and cacheable way to read children 
from the composite node states. Maybe we shouldn't hide this laziness behind a 
map in the CompositeNodeState/Builder and make the {{nodeStates}} field a 
function, which can be memoized if needed.

> NPE in CompositeNodeStore
> -------------------------
>
>                 Key: OAK-6486
>                 URL: https://issues.apache.org/jira/browse/OAK-6486
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: composite
>    Affects Versions: 1.7.4
>            Reporter: Tomek Rękawek
>            Assignee: Tomek Rękawek
>             Fix For: 1.8
>
>
> Following NPE can be found in logs when running the Composite Node Store:
> {noformat}
> 24.07.2017 20:53:47.297 *ERROR* [oak-lucene-0] 
> org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider Uncaught 
> exception in 
> org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider@6580fe4c
> java.lang.NullPointerException: null
>         at 
> org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:471)
>         at 
> org.apache.jackrabbit.oak.composite.CompositeNodeState.compareAgainstBaseState(CompositeNodeState.java:187)
>         at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
>         at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.diffAndUpdate(IndexTracker.java:142)
>         at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.update(IndexTracker.java:113)
>         at 
> org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider.contentChanged(LuceneIndexProvider.java:75)
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:128)
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:122)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:748)
> {noformat}
> Probably it's related to changes introduced in OAK-6425.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to