Hi, I am using JCSCache as a in-memory caching solution for our product. Sometime put and remove calls on JCSCache causes a deadlock. See the thread dump below. I couldn't reproduce during the performance test but our team in CZ is able to reproduce this. Is it problem due to mis configuration?
I uses jcs-1.3 using maven dependency. See the cache.ccf below the thread-dump. Thread "Thread-790" thread-id 1,518 thread-stateBLOCKEDWaiting on lock: org.apache.jcs.engine.control.compositeca...@180575f Owned by: Thread-579 Id: 1,306 at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:736) at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:702) at: org.apache.jcs.access.CacheAccess.remove(CacheAccess.java:362) at: com.example.maf.cache.JCSCache.removeObject(JCSCache.java:341) Thread "Thread-789" thread-id 1,517 thread-stateBLOCKEDWaiting on lock: org.apache.jcs.engine.control.compositeca...@180575f Owned by: Thread-579 Id: 1,306 at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:736) at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:702) at: org.apache.jcs.access.CacheAccess.remove(CacheAccess.java:362) at: com.example.maf.cache.JCSCache.removeObject(JCSCache.java:341) Thread "Thread-788" thread-id 1,516 thread-stateBLOCKEDWaiting on lock: org.apache.jcs.engine.control.compositeca...@180575f Owned by: Thread-579 Id: 1,306 at: org.apache.jcs.engine.control.CompositeCache.update(CompositeCache.java:162) at: org.apache.jcs.access.CacheAccess.put(CacheAccess.java:281) at: org.apache.jcs.access.CacheAccess.put(CacheAccess.java:249) at: com.example.maf.cache.JCSCache.putObject(JCSCache.java:294) Thread "Thread-787" thread-id 1,515 thread-stateBLOCKEDWaiting on lock: org.apache.jcs.engine.control.compositeca...@180575f Owned by: Thread-579 Id: 1,306 at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:736) at: org.apache.jcs.engine.control.CompositeCache.remove(CompositeCache.java:702) at: org.apache.jcs.access.CacheAccess.remove(CacheAccess.java:362) at: com.example.maf.cache.JCSCache.removeObject(JCSCache.java:341) Thread "Thread-786" thread-id 1,514 thread-stateBLOCKEDWaiting on lock: org.apache.jcs.engine.control.compositeca...@180575f Owned by: Thread-579 Id: 1,306 at: org.apache.jcs.engine.control.CompositeCache.update(CompositeCache.java:162) at: org.apache.jcs.access.CacheAccess.put(CacheAccess.java:281) at: org.apache.jcs.access.CacheAccess.put(CacheAccess.java:249) at: com.example.maf.cache.JCSCache.putObject(JCSCache.java:294) Here is the cache.ccf file # # Default config: don't allow anything to be stored.maxobject=0 jcs.default= jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects=0 jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.default.cacheattributes.UseMemoryShrinker=false jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.default.elementattributes.IsEternal=false jcs.default.elementattributes.IsRemote=false jcs.default.elementattributes.IsLateral=false jcs.default.elementattributes.IsSpool=false # ## Used by subscriber entry # jcs.region.subscriber= jcs.region.subscriber.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.region.subscriber.cacheattributes.MaxObjects=10000 jcs.region.subscriber.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.region.subscriber.cacheattributes.UseMemoryShrinker=true jcs.region.subscriber.cacheattributes.MaxMemoryIdleTimeSeconds=120 jcs.region.subscriber.cacheattributes.ShrinkerIntervalSeconds=180 jcs.region.subscriber.cacheattributes.MaxSpoolPerRun=1000 jcs.region.subscriber.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.region.subscriber.elementattributes.IsEternal=false jcs.region.subscriber.elementattributes.IsRemote=false jcs.region.subscriber.elementattributes.IsLateral=false jcs.region.subscriber.elementattributes.IsSpool=false jcs.region.subscriber.elementattributes.IdleTime=60 jcs.region.subscriber.elementattributes.MaxLifeSeconds=180 # ## Used for COS, COI # jcs.region.shared= jcs.region.shared.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.region.shared.cacheattributes.MaxObjects=500 jcs.region.shared.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.region.shared.cacheattributes.UseMemoryShrinker=true jcs.region.shared.cacheattributes.MaxMemoryIdleTimeSeconds=120 jcs.region.shared.cacheattributes.ShrinkerIntervalSeconds=300 jcs.region.shared.cacheattributes.MaxSpoolPerRun=1000 jcs.region.shared.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.region.shared.elementattributes.IsEternal=false jcs.region.shared.elementattributes.IsRemote=false jcs.region.shared.elementattributes.IsLateral=false jcs.region.shared.elementattributes.IsSpool=false jcs.region.shared.elementattributes.IdleTime=60 jcs.region.shared.elementattributes.MaxLifeSeconds=300