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 "Michael Dürig (JIRA)" <ji...@apache.org> on 2017/04/25 10:26:04 UTC
[jira] [Commented] (OAK-5042) Improve caching of segments
[ https://issues.apache.org/jira/browse/OAK-5042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15982681#comment-15982681 ]
Michael Dürig commented on OAK-5042:
------------------------------------
While investigating on OAK-6106 I discovered a problem with the current {{SegmentCache}}'s invalidation logic: as it turns out the {{onRemoval}} callback might get called for the item currently being put into the cache (I discovered this when I set the cache size to 0). In this case the current segment will be invalidated *before* it is actually connected to its id via {{SegmentId.loaded()}}. This causes such segments to never ever by evicted.
> Improve caching of segments
> ---------------------------
>
> Key: OAK-5042
> URL: https://issues.apache.org/jira/browse/OAK-5042
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segment-tar
> Reporter: Michael Dürig
> Assignee: Michael Dürig
> Labels: performance, scalability
> Fix For: 1.8, 1.7.1
>
> Attachments: OAK-5042.png
>
>
> Various aspects of how Segment Tar caches segments could possibly improved. The current cache is a result of replacing the former ad-hoc cache with a proper one in OAK-3055. While the former was prone to contention under concurrent load the current cache is too oblivious about reads: read accesses are always served through {{SegmentId.segment}} and never actually hit the cache. This results in frequently accessed segments not to be seen as such by the cache and potentially being prematurely evicted.
> Possibly approaches to address this problem include:
> * Reinstantiating the cache we had pre OAK-3055 but making in fully concurrent.
> * Convey the information about read accesses to the current cache.
> * In either of the above cases avoid bulk segments from being placed into the cache.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)