I have build an application using PojoCache 1.4.1 SP6/7 and the leaf node has a collection (HashSet) of objects. I need to frequently add/remove objects from the collection. But at high load, some removed objects only exist as _lock_: LOCK with no data attached. (See the object /2 under /transactions). Those phantom objects cannot be removed.
The Cache configuration is READ_COMMITTED for IsolationLevel and REPL_ASYNC for CacheMode and no eviction or passivation configured. Also LockParentForChildInsertRemove set to true.
When accessing the collection, threads use Iterator to remove the object and no synchronization is used when adding/removing objects from the collection. My questions are:
1) JBossCache is thread-safe, so I do not need to use synchronization when adding/removing objects from the collection, since those collection is proxy anyway, right?
2) Is there any way to remove those "_lock_: LOCK" entries?
Thanks
sqian99
/0
_lock_: LOCK
__jboss:internal:class__: class com.relayhealth.ch.rt.wscache.impl.SubmitterCacheNode
AOPInstance: org.jboss.cache.aop.AOPInstance@d74b31
fqn: /wsgway/INTERN/INTERN
/parent
__jboss:internal:class__: class com.relayhealth.ch.rt.wscache.impl.BillerCacheNode
AOPInstance: org.jboss.cache.aop.AOPInstance@89848d
/children
__jboss:internal:class__: class java.util.HashSet
AOPInstance: org.jboss.cache.aop.AOPInstance@5d4a62
/0
_lock_: LOCK
__jboss:internal:class__: class com.relayhealth.ch.rt.wscache.impl.UserCacheNode
AOPInstance: org.jboss.cache.aop.AOPInstance@be8e12
fqn: /wsgway/INTERN/INTERN/rteuser
/transactions
__jboss:internal:class__: class java.util.HashSet
AOPInstance: org.jboss.cache.aop.AOPInstance@6159c4
/2
_lock_: LOCK
/parent
__jboss:internal:class__: class com.relayhealth.ch.rt.wscache.impl.SubmitterCacheNode
AOPInstance: org.jboss.cache.aop.AOPInstance@182eca8