You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Michael Dürig (JIRA)" <ji...@apache.org> on 2016/10/05 20:13:20 UTC

[jira] [Resolved] (JCR-2442) make internal item cache hierarchy-aware

     [ https://issues.apache.org/jira/browse/JCR-2442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dürig resolved JCR-2442.
--------------------------------
    Resolution: Later

> make internal item cache hierarchy-aware
> ----------------------------------------
>
>                 Key: JCR-2442
>                 URL: https://issues.apache.org/jira/browse/JCR-2442
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-jcr2spi
>            Reporter: Stefan Guggisberg
>            Assignee: Michael Dürig
>         Attachments: JCR-2442.patch
>
>
> currently there are 2 configuration parameters which affect the performance of client-sided tree traversals:
> - fetch-depth
> - size of item cache
> my goal is to minimize the number of server-roundtrips triggered by traversing the node hierarchy on the client.
> the current eviction policy doesn't seem to be ideal for this use case. in the case of relatively deep tree structures
> a request for e.g. '/foo' can easily cause a cache overflow and root nodes might get evicted from the cache.
> a following request to '/foo' cannot be served from cache but will trigger yet another deep fetch, despite the fact
> that the major part of the tree structure is still in the cache.
> increasing the cache size OTOH bears the risk of OOM errors since the memory footprint of the cached state seems 
> to be quite large. i tried several combinations of fetch depth and cache size, to no avail. i either ran into OOM errors 
> or performance was inacceptably slow due to an excessive number of server roundtrips.
> i further noticed that sync'ing existing cached state with the results of a deep fetch is rather slow, e.g.
> an inital request to '/foo' returns 11k items. the cache size is 10k, i.e. the cache cannot accomodate the entire 
> result set.  assuming that /foo has been evicted, the following request to '/foo' will trigger another deep 
> fetch which this time takes considerably moe time since the result set needs to be sync'ed with existing cached
> state. 
> using a LRU eviction policy and touching every node along the parent hierarchy when requesting an item might be a solution.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)