db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel John Debrunner (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2220) Uncommitted transactions executed throught XAResource will held locks after the application terminates (or crashes during the transaction).
Date Mon, 19 Feb 2007 17:07:08 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474230

Daniel John Debrunner commented on DERBY-2220:

Looking at the patch I think you describe the same situation in three different ways:
  1) global transaction in unit of work   [ not sure if unit of work is the correct description
  2) XA transaction if it was not disassociated from the connection  [ double negative ] 
  3) global/local transaction associated with the connetion [ local transactions are not associated]

I think this makes the code confusing for later readers who will not have the benefit of seeing
all three together.
I think the correct terminology would be (I assume this is what the patch intends):
  - If the global transaction is associated with the XAResource and the physical connection
is closed then rollback the
global transaction.

For the changes to EmbedXAConnection I think two changes are needed:
    - end the transaction with TMFAIL (resource manager will mark it as rollback-only)
    - do not print the XAException to System.err. The embedded driver must throw its exceptions
      the calling program, in this case you need to wrap it in a SQLException

I didn't look at the network code, but can local transactions use the new abortCurrentTransaction
method DRDAXAProtocol?
Using the term associated here with local connection is confusing, since associated is for
XA global transactions..

> Uncommitted transactions executed throught XAResource will held locks after the application
terminates (or crashes during the transaction).
> -------------------------------------------------------------------------------------------------------------------------------------------
>                 Key: DERBY-2220
>                 URL: https://issues.apache.org/jira/browse/DERBY-2220
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions:
>         Environment: Solaris Nevada build 49, Sun's JDK1.6
>            Reporter: Julius Stroffek
>         Assigned To: Julius Stroffek
>         Attachments: d2220_beta.diff, d2220_beta2.diff, d2220_try1.diff, d2220_try1.stat,
XATranTest.java, xxx.sql
> Using this piece of code derby will not release a table lock of 'dummy' table.
>             String query = "insert into dummy (field1) values ('" + Integer.toString(value)
+ "')";
>             XAConnection xaConnection = createXAConnection("jdbc:derby://localhost:1527/TestDB",
"", "");
>             XAResource xaResource = xaConnection.getXAResource();
>             conn = xaConnection.getConnection();
>             Xid xid = createXid(value);        
>             xaResource.setTransactionTimeout(10);
>             xaResource.start(xid, XAResource.TMNOFLAGS);
>             Statement statement = conn.createStatement();
>             statement.execute(query);        
>             // terminate the client application
>             // this will not release any locks
>             System.exit(0);

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message