[
https://issues.apache.org/jira/browse/OAK-4112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15270410#comment-15270410
]
Tomek Rękawek commented on OAK-4112:
------------------------------------
Thanks, I think it's a good idea. My implementation (committed in
[r1742240|https://svn.apache.org/r1742240]) is slightly different, though. I
extracted the {{isNewer()}} method from the {{putIfNewer()}} and use it
directly in the {{putNonConflictingDocs()}}. I didn't changed the
{{RDBDS#runThroughCache}} yet, as it we'd need an extra lock there (to create a
critical section containing the getIfPresent() and the putIfNewer(...)). Let's
deal with this method in the OAK-4320.
> 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
> Assignee: Tomek Rękawek
> Labels: performance
> Fix For: 1.6, 1.5.2
>
> Attachments: OAK-4112-1.patch, OAK-4112-2.patch, OAK-4112-3.patch,
> OAK-4112-4.patch, OAK-4112-putifnewer.patch, 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)