Marcel Reutegger created OAK-591:
------------------------------------

             Summary: Improve KernelNodeStore cache efficiency
                 Key: OAK-591
                 URL: https://issues.apache.org/jira/browse/OAK-591
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core
    Affects Versions: 0.6
            Reporter: Marcel Reutegger


The cache in KernelNodeStore references entries with a path+revision combo. 
This mapping quickly becomes inefficient when there are writes on the 
repository. Whenever something is changed, the complete cache basically becomes 
invalid and oak-core needs to re-fetch nodes again, even though they didn't 
change. The attached test shows this behaviour. The test initially creates 10 
nodes and lets a thread read those nodes repeatedly. To make the test somewhat 
realistic the reader acquires a new session in every run through the loop. This 
is to simulate e.g. a request which acquires a new session every time (Apache 
Sling does it that way). At the same time writes occur but in a separate part 
of the repository. As can be seen in the logs, the nodes are read from the 
MicroKernel whenever something changes anywhere in the repository. Obviously 
this is no limited to the test nodes. The log also shows repeated reads to node 
type, user and index nodes. None of them change while the test runs.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to