Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. 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.

XMLWordPrintable

      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.

            adrian.brock Adrian Brock (Inactive)
            rhn-support-jhowell William Howell
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: