activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexei Akimov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (AMQ-3465) TransactionContext produces errors in concurrent environment
Date Tue, 23 Aug 2011 12:53:29 GMT
TransactionContext produces errors in concurrent environment
------------------------------------------------------------

                 Key: AMQ-3465
                 URL: https://issues.apache.org/jira/browse/AMQ-3465
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.5.0
         Environment: Windows XP SP2, Oracle JDK 1.6.0_23
            Reporter: Alexei Akimov


Method "isInXATransaction" of class org.apache.activemq.TransactionContext seems to be implemeted
incorrectly. Here is the code:

public boolean isInXATransaction() {
    return (transactionId != null && transactionId.isXATransaction()) || !ENDED_XA_TRANSACTION_CONTEXTS.isEmpty();
}

Map "ENDED_XA_TRANSACTION_CONTEXTS" is a static field. TransactionContext instances are used
for both outbound and inbound communications. Suppose a thread creating a new non-transactional
session. It calls isInXATransaction and gets true, just because another thread is completing
transactional message delivery at the same time. After XAResource.end() call but before XAResource.commit()
call the map is not empty and it results in a JMSException in the first thread (see org.apache.activemq.ra.ManagedTransactionContext.setUseSharedTxContext(boolean)").



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message