[
https://issues.apache.org/jira/browse/OAK-4112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15239399#comment-15239399
]
Tomek Rękawek commented on OAK-4112:
------------------------------------
[~mreutegg], could you take a look on the attached patch?
It's quite similar to the OAK-3566 (CacheChangesTracker =~ QueryContext), with
2 main differences:
1. the tracker is implemented at the NodeDocumentCache level, so we don't have
to worry about updating bloom filter in the DocumentStore itself,
2. tracker is updated atomically, inside the cache operation critical sections.
> Replace the query exclusive lock with a cache tracker
> -----------------------------------------------------
>
> Key: OAK-4112
> URL: https://issues.apache.org/jira/browse/OAK-4112
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: documentmk, mongomk
> Reporter: Tomek Rękawek
> Labels: performance
> Fix For: 1.6
>
> Attachments: OAK-4112.patch
>
>
> The {{MongoDocumentStore#query()}} method uses an expensive
> {{TreeLock#acquireExclusive}} method, introduced in OAK-1897 to avoid caching
> outdated documents.
> It should be possible to avoid acquiring the exclusive lock, by tracking the
> cache changes that occurs during the Mongo find() operation. When the find()
> is done, we can update the cache with the received documents if they haven't
> been invalidated in the meantime.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)