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)