Viliam Durina created AMQ-7354:
----------------------------------

             Summary: Transaction interleaving works incorrectly
                 Key: AMQ-7354
                 URL: https://issues.apache.org/jira/browse/AMQ-7354
             Project: ActiveMQ
          Issue Type: Bug
          Components: JMS client
    Affects Versions: 5.15.10
            Reporter: Viliam Durina


I'm doing these steps:
{code:java}
 Xid xid1, xid2;
 XASession session = ...;
 MessageConsumer consumer = ...;
 XAResource xaRes = session.getXAResource();xaRes.start(xid1, TMNOFLAGS);
 consumer.receive();
 xaRes.end(xid1, TMSUCCESS);
 // prepare the xid1, continue with xid2
 xaRes.prepare(xid1);
 xaRes.start(xid2);
 // receive one more item
 consumer.receive();
 // commit the first transaction
 xaRes.commit(xid1, false);{code}
The last `commit` should commit only the first received message. But it commits 
also the message received using the `xid2` transaction.

As far as I can tell this is how it should behave according to JTA spec. That's 
why the `commit` method has the `Xid` argument: to tell which transaction are 
we committing. The `receive` method uses the transaction associated currently 
with the session. It also works correctly with ActiveMQ Artemis.

See also 
http://activemq.2283324.n4.nabble.com/Transaction-interleaving-td4753653.html



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to