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 "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2016/01/18 10:53:39 UTC

[jira] [Updated] (OAK-3889) SegmentMk StringCache memory leak

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

Alex Parvulescu updated OAK-3889:
---------------------------------
    Attachment: StringCache.java.patch

proposed patch, it clones the key to make sure value is not being reused when you set the string value.
I also refactored the size estimation to use the oak-commons bits, but this should not affect the code in any way.
fyi [~mduerig].
[~tmueller] Can you validate the patch?

> SegmentMk StringCache memory leak
> ---------------------------------
>
>                 Key: OAK-3889
>                 URL: https://issues.apache.org/jira/browse/OAK-3889
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segmentmk
>            Reporter: Alex Parvulescu
>         Attachments: StringCache.java.patch
>
>
> The StringCache is made of 2 components: a FastCache and a Lirs Cache and both caches use the same key object 'StringCacheEntry' with the condition that the FastCache contains the string value itself with the key while the Lirs Cache will only contain the _msb_, _lsb_ and _offset_.
> Sharing the same key leads to issues when a value qualifies for both caches as it results in the string value ending up contained in the Lirs Cache, effectively blowing up the cache's size.
> On a test I ran I noticed the Lirs Cache going up to 800mb even though it was configured at 256mb.



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