TransactionManager resume method should only resume previously suspended
transaction
------------------------------------------------------------------------------------
Key: GERONIMO-4448
URL: https://issues.apache.org/jira/browse/GERONIMO-4448
Project: Geronimo
Issue Type: Bug
Security Level: public (Regular issues)
Components: transaction manager
Affects Versions: 2.2
Reporter: Lin Sun
Assignee: Lin Sun
Fix For: 2.2
Currently, the resume manager resumes pretty much any transaction as long as
the transaction is not null and is an instance of TransactionImpl.
I think this is incorrect. Per the jTA 1.1 spec, page 13:
Suspending and Resuming a Transaction
A call to theTransactionManager.suspend method temporarily suspends the
transaction that is currently associated with the calling thread. If the thread
is not
associated with any transaction, anull object reference is returned; otherwise,
a valid
Transaction object is returned. TheTransactionobject can later be passed to the
resume method to reinstate the transaction context association with the calling
thread.
TheTransactionManager.resumemethod re-associates the specified transaction
context with the calling thread. If the transaction specified is a valid
transaction, the
transaction context is associated with the calling thread; otherwise, the
thread is
associated with no transaction.
Transaction tobj = TransactionManager.suspend();
..
TransactionManager.resume(tobj);
A simple test below would reveal the prob:
public void testResume1() throws Exception {
Transaction tx;
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
tx = tm.getTransaction();
assertNotNull(tx);
assertEquals(Status.STATUS_ACTIVE, tx.getStatus());
tm.commit();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertNull(tm.getTransaction());
try {
tm.resume(tx);
fail();
} catch (InvalidTransactionException e) {
// expected
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.