chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Trask Stalnaker (JIRA)" <>
Subject [jira] [Created] (CMIS-769) CacheImpl is not thread safe (org.apache.chemistry.opencmis.client.bindings.cache.impl.CacheImpl)
Date Wed, 19 Mar 2014 08:34:43 GMT
Trask Stalnaker created CMIS-769:

             Summary: CacheImpl is not thread safe (org.apache.chemistry.opencmis.client.bindings.cache.impl.CacheImpl)
                 Key: CMIS-769
             Project: Chemistry
          Issue Type: Bug
          Components: opencmis-client
    Affects Versions: OpenCMIS 0.10.0
            Reporter: Trask Stalnaker

We ended up with a thread stuck in an infinite loop at:

java.lang.Thread.State: RUNNABLE
java.util.LinkedHashMap.transfer(Unknown Source)
java.util.HashMap.resize(Unknown Source)
java.util.LinkedHashMap.addEntry(Unknown Source)
java.util.HashMap.put(Unknown Source)

The issue seems to be that CacheImpl is using an access-ordered LinkedHashMap via LruCacheLevelImpl,
and CacheImpl is using a ReentrantReadWriteLock to synchronize access to the LinkedHashMap,
allowing multiple concurrent readers, which is ok for HashMap, but is not ok for an access-ordered
LinkedHashMap, see the bolded sentence at

"In access-ordered linked hash maps, merely querying the map with get is a structural modification."

This message was sent by Atlassian JIRA

View raw message