Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-15706

[GSS](7.1.z) WFTXN0001: A transaction is already in progress

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Critical
    • None
    • 7.1.4.GA
    • ActiveMQ, Transactions
    • None
    • ?
    • Hide

      None

      Show
      None

    Description

      The following exception can be seen in the server log file:

      2018-10-17 15:29:34,695 ERROR [org.apache.activemq.artemis.ra] (Thread-40 (ActiveMQ-client-global-threads)) AMQ154004: Failed to deliver message: javax.resource.spi.ApplicationServerInternalException: Failed to begin transaction
      	at org.springframework.jca.endpoint.AbstractMessageEndpointFactory$AbstractMessageEndpoint.beforeDelivery(AbstractMessageEndpointFactory.java:221)
      	at org.apache.activemq.artemis.ra.inflow.ActiveMQMessageHandler.onMessage(ActiveMQMessageHandler.java:293)
      	at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1001)
      	at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
      	at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1124)
      	at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:122)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: javax.transaction.NotSupportedException: WFTXN0001: A transaction is already in progress
      	at org.wildfly.transaction.client.ContextTransactionManager.begin(ContextTransactionManager.java:60)
      	at org.wildfly.transaction.client.ContextTransactionManager.begin(ContextTransactionManager.java:54)
      	at org.springframework.transaction.jta.JtaTransactionManager.createTransaction(JtaTransactionManager.java:1199)
      	at org.springframework.jca.endpoint.AbstractMessageEndpointFactory$TransactionDelegate.beginTransaction(AbstractMessageEndpointFactory.java:312)
      	at org.springframework.jca.endpoint.AbstractMessageEndpointFactory$AbstractMessageEndpoint.beforeDelivery(AbstractMessageEndpointFactory.java:218)
      

      Based on ht log files it seems that ActiveMQMessageHandler starts (and thus associates to the Thread) a tx via AbstractMessageEndpointFactory$AbstractMessageEndpoint.beforeDelivery, but because the subsequent enlistResource/setTansactionTimeout under the same spring library call fails it incorrectly assumes the begin itself failed and does not subsequently call afterDelivery, which is where the tx would normally be dissociated i.e. cleaned up. Since a thread can have at most one associated tx, the failed but still associated tx thereafter obstructs creation of any new tx on the same thread.

      Attachments

        Issue Links

          Activity

            People

              rhn-support-jbertram Justin Bertram
              rhn-support-toross Tom Ross
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: