You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Julian Reschke (JIRA)" <ji...@apache.org> on 2017/12/20 09:37:00 UTC

[jira] [Comment Edited] (OAK-4112) Replace the query exclusive lock with a cache tracker

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

Julian Reschke edited comment on OAK-4112 at 12/20/17 9:36 AM:
---------------------------------------------------------------

Just for record - Current BloomFilter usage involves synchronized access. If it turns out that it had quite adverse impact on concurrency we might need to revisit this. Couple of related links around this
* http://stackoverflow.com/questions/11720111/thread-safe-bloomfilter
* https://github.com/google/guava/issues/1090 - Guava issue for having a concurrent BloomFilter
* A possible concurrent BloomFilter implementation https://github.com/ifesdjeen/blomstre adapted from Cassandra implementation

Note it impacts reads also but only those key ranges for which some update is in progress. Implementation wise it would have similar behaviour as TreeLock used by MongoDocumentStore earlier


was (Author: chetanm):
Just for record - Current BloomFilter usage involves synchornized access. If it turns out that it had quite adverse impact on concurrency we might need to revisit this. Couple of related links around this
* http://stackoverflow.com/questions/11720111/thread-safe-bloomfilter
* https://github.com/google/guava/issues/1090 - Guava issue for having a concurrent BloomFilter
* A possible concurrent BloomFilter implementation https://github.com/ifesdjeen/blomstre adapted from Cassandra implementation

Note it impacts reads also but only those key ranges for which some update is in progress. Implementation wise it would have similar behaviour as TreeLock used by MongoDocumentStore earlier

> 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.4.6, 1.5.2, 1.6.0
>
>         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.4.14#64029)