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

Chetan Mehrotra edited comment on OAK-4112 at 5/30/16 6:08 AM:
---------------------------------------------------------------

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


was (Author: chetanm):
Just for record - Current BloomFilter usage involves synchornized access (note 
it impacts reads also). 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

> 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)

Reply via email to