jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Mueller (JIRA)" <j...@apache.org>
Subject [jira] Updated: (JCR-619) CacheManager (Memory Management in Jackrabbit)
Date Thu, 16 Nov 2006 09:12:38 GMT
     [ http://issues.apache.org/jira/browse/JCR-619?page=all ]

Thomas Mueller updated JCR-619:

    Attachment: cacheManager6.txt

A Java level deadlock could occur with the current CacheManager, if:

Thread 1: CacheManager.resizeAll(holding a lock on the CacheManager) calls Cache.setMaxMemorySize
(which tries to lock MLRUItemStateCache.cache)

Thread 2: From the same object, MLRUItemStateCache.dispose (holding a lock on MLRUItemStateCache.cache)
calls CacheManager.disposeCache (which tries to lock CacheManager)

I made a patch, where CacheManager.disposeCache is not synchronized on the CacheManager. Instead,
it synchronizes on the caches HashMap, where it removes the object (so that modifications
to the caches map are synchronized, as this is needed). CacheManager.add now also synchronizes
on the caches map.

This should solve the problem.

> CacheManager (Memory Management in Jackrabbit)
> ----------------------------------------------
>                 Key: JCR-619
>                 URL: http://issues.apache.org/jira/browse/JCR-619
>             Project: Jackrabbit
>          Issue Type: New Feature
>          Components: core
>    Affects Versions: 1.1
>            Reporter: Thomas Mueller
>         Assigned To: Stefan Guggisberg
>             Fix For: 1.2
>         Attachments: cacheManager.txt, cacheManager2.txt, cacheManager5.txt, cacheManager6.txt
> Jackrabbit can run out of memory because the the combined size of the various caches
is not managed. The biggest problem (for me) is the combined size of the o.a.j.core.state.MLRUItemStateCache
caches. Each session seems to create a few (?) of those caches, and each one is limited to
4 MB by default.
> I have implemented a dynamic (cache-) memory management service that distributes a fixed
amount of memory dynamically to all those caches.
> Here is the patch

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message