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

Julius Stroffek updated DERBY-2220:
-----------------------------------

    Attachment: d2220_fix.stat
                d2220_fix.diff

In DRDAXAProtocol the null value was assigned to a local variable instead of 
the global one. This causes the last transaction to be rolled back after the 
connection will be closed even if the XAResource.end was called before.

Lesson learned: Better, do not use the same names for arguments and class 
members.


> 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: 10.2.2.0, 10.3.0.0
>         Environment: Solaris Nevada build 49, Sun's JDK1.6
>            Reporter: Julius Stroffek
>         Assigned To: Julius Stroffek
>             Fix For: 10.2.2.1, 10.3.0.0
>
>         Attachments: d2220_beta.diff, d2220_beta2.diff, d2220_fix.diff, 
> d2220_fix.stat, d2220_try1.diff, d2220_try1.stat, d2220_try2.diff, 
> d2220_try2.stat, d2220_try4.diff, d2220_try4.stat, d2220_try5.diff, 
> d2220_try5.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.

Reply via email to