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

Reply via email to