Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.4.10
-
None
Description
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):
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)
(taken from the production instance running the Oak 1.4.10).
//cc: chetanm, mreutegg, catholicon
Attachments
Attachments
Issue Links
- is related to
-
OAK-6351 Invalidate cache entries when getChildNodes() is aborted
- Closed