You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2009/02/26 19:19:58 UTC

svn commit: r748258 - /activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java

Author: gtully
Date: Thu Feb 26 18:19:58 2009
New Revision: 748258

URL: http://svn.apache.org/viewvc?rev=748258&view=rev
Log:
resolve broker unit test testReceiveTwoThenCloseConnection(org.apache.activemq.ra.JmsXAQueueTransactionTest): ra test uses Auto ack mode but the xa tx has been cleaned up so amq just sees a close on auto ack so it delivers the ack. AMQ-2128  Keeping the tx around till after the close sorts this out. One question though, with the ack mode supposed to be ignored, does it makes sense for the RA to use a transacted ack mode when there is a transaction?

Modified:
    activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java

Modified: activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java?rev=748258&r1=748257&r2=748258&view=diff
==============================================================================
--- activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java (original)
+++ activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java Thu Feb 26 18:19:58 2009
@@ -229,13 +229,14 @@
             proxy.cleanup();
         }
         proxyConnections.clear();
-        localAndXATransaction.cleanup();
 
         try {
             ((ActiveMQConnection)physicalConnection).cleanup();
         } catch (JMSException e) {
             throw new ResourceException("Could cleanup the ActiveMQ connection: " + e, e);
         }
+        // defer transaction cleanup till after close so that close is aware of the current tx
+        localAndXATransaction.cleanup();
 
     }