If we change the EJB to @TransactionAttribute(value=TransactionAttributeType.NEVER), then
we can use the GenericTransactionManager and it prevents the lockups.
So, why is it locking on a read?
Also, since this cache is supposed to persist until explicitly removed we've commented
the node.
Otherwise we would get warnings like:
"WARN [RegionImpl] putNodeEvent(): eviction node event queue size is at 98%
threshold value of capacity: 200000 Region: / You will need to reduce the
wakeUpIntervalSeconds parameter." and the cache would also wait until it woke up.
Lowering the interval to 5 seconds increased the cpu load too much.
I'm puzzled concerning why the reader threads were hanging here, too waiting for the
eviction listener (?) to wakeup though.
The threads were waiting in at sun.misc.Unsafe.park(Native Method)
| - parking to wait for <0xedd51380> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
| at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
| at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
| at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:254)
| at org.jboss.cache.RegionImpl.registerEvictionEvent(RegionImpl.java:249)
| at org.jboss.cache.RegionImpl.registerEvictionEvent(RegionImpl.java:234)
| at
org.jboss.cache.interceptors.EvictionInterceptor.registerEvictionEventToRegionManager(EvictionInterceptor.java:252)
| at
org.jboss.cache.interceptors.EvictionInterceptor.visitGetKeyValueCommand(EvictionInterceptor.java:215)
| at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:97)
|
It would lockup after only ~50 requests on that node were made.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4245701#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...