[jboss-user] [JBossCache] - Concurrency issue in OrderedSynchronizationHandler (2.0.0GA
fungrim
do-not-reply at jboss.com
Thu Feb 14 10:25:29 EST 2008
Hi,
Two issues/questions regarding OrderedSynchronizationHandler.
1) The "instances" member is not synchronized
OrderedSynchronizationHandler seems to have an unguarded static HashMap member called "instances". This is a potentional crash issue. On one of our instances (in a four member cluster) with medium high load (aprox 1500 transaction per second), the CPU flat-lined on 200% with 21 threads caught and spinning in HashMap.get(Object) as called from OrderedSynchronizationHandler.getInstance(Transaction). I'll copy a typical stack trace below.
2) The "instances" member is static
This is more of a question. If several caches are run within the same VM/ClassLoader they will all share the "instances" member. This seems fairly inefficient, especially if the map in question needs to be synchronized as per #1.
Below is a typical, slightly trunctated, stack trace for issue #1.
"Incoming Thread,TableSpace,172.16.0.2:8786" daemon prio=1 tid=0x097e9208 nid=0x14de runnable [0x83228000..0x83229030]
| at java.util.HashMap.get(HashMap.java:346)
| at org.jboss.cache.interceptors.OrderedSynchronizationHandler.getInstance(OrderedSynchronizationHandler.java:50)
| at org.jboss.cache.interceptors.TxInterceptor.registerHandler(TxInterceptor.java:901)
| at org.jboss.cache.interceptors.TxInterceptor.handleRemotePrepare(TxInterceptor.java:246)
| at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:100)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:76)
| at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:123)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:76)
| at org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:62)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:76)
| at com.cubeia.space.cache.HaltableInterceptor.invoke(HaltableInterceptor.java:32)
| at org.jboss.cache.CacheImpl.invokeMethod(CacheImpl.java:3939)
| at org.jboss.cache.CacheImpl._replicate(CacheImpl.java:2853)
|
What say you?
/Lars J. Nilsson
Cubeia Ltd, UK Fillial
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4129420#4129420
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4129420
More information about the jboss-user
mailing list