[jboss-jira] [JBoss JIRA] Commented: (JBAS-4697) Use of EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap.toArray() is not thread safe and should be replace with java.util.concurrent.ConcurrentHashMap when using MQ transactions.

Adrian Brock (JIRA) jira-events at lists.jboss.org
Tue Sep 11 03:40:54 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBAS-4697?page=comments#action_12376162 ] 
            
Adrian Brock commented on JBAS-4697:
------------------------------------

The real problem is that we do not have the latest version of Oswego Concurrent's ConcurrentHashMap
which has a bug fix for toArray() see the attached patch.txt

> Use of EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap.toArray() is not thread safe and should be replace with java.util.concurrent.ConcurrentHashMap when using MQ transactions.
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBAS-4697
>                 URL: http://jira.jboss.com/jira/browse/JBAS-4697
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: JMS service
>    Affects Versions: JBossAS-4.2.0.GA
>            Reporter: Jay Howell
>         Assigned To: Adrian Brock
>             Fix For: JBossAS-4.2.2.GA
>
>         Attachments: patch.txt
>
>
> Custom Transaction engine throws the following exception...
> SEVERE: TransactionManager
> org.jboss.mq.SpyXAException: Resource manager error during recover; - nested throwable: (org.jboss.mq.SpyJMSException: Cannot recover; - nested throwable:
> (java.util.NoSuchElementException))
> at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72)
> at org.jboss.mq.SpyXAResource.recover(SpyXAResource.java:166)
> at org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapper.recover(JcaXAResourceWrapper.java:98)
> at com.gs.fw.aig.ljtm.LJTMTransactionManager.tryToRecover(LJTMTransactionManager.java:941)
> Caused by: org.jboss.mq.SpyJMSException: Cannot recover; - nested throwable: (java.util.NoSuchElementException)
> at org.jboss.mq.SpyJMSException.getAsJMSException(SpyJMSException.java:72)
> at org.jboss.mq.SpyJMSException.rethrowAsJMSException(SpyJMSException.java:57)
> at org.jboss.mq.Connection.recover(Connection.java:1142)
> at org.jboss.mq.SpyXAResourceManager.recover(SpyXAResourceManager.java:325)
> at org.jboss.mq.SpyXAResource.recover(SpyXAResource.java:162)
> ... 76 more
> Caused by: java.util.NoSuchElementException
> at EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap$HashIterator.next(ConcurrentHashMap.java:1131)
> at java.util.AbstractCollection.toArray(AbstractCollection.java:176)
> at org.jboss.mq.pm.TxManager.recover(TxManager.java:317)
> at org.jboss.mq.server.JMSDestinationManager.recover(JMSDestinationManager.java:502)
> at org.jboss.mq.server.JMSServerInterceptorSupport.recover(JMSServerInterceptorSupport.java:197)
> at org.jboss.mq.server.JMSServerInterceptorSupport.recover(JMSServerInterceptorSupport.java:197)
> at org.jboss.mq.server.TracingInterceptor.recover(TracingInterceptor.java:769)
> at org.jboss.mq.server.JMSServerInvoker.recover(JMSServerInvoker.java:203)
> at org.jboss.mq.il.jvm.JVMServerIL.recover(JVMServerIL.java:188)
> at org.jboss.mq.Connection.recover(Connection.java:1137)
> ... 78 more 
> The EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap.toArray() calls values() which is not thread safe.  This needs to be switched to java.util.concurrent.ConcurrentHashMap.
> The class org.jboss.mq.pm.TxManager needs to be changed to use java.util.concurrent.ConcurrentHashMap.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list