[ https://issues.apache.org/jira/browse/DERBY-1016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Myrna van Lunteren reopened DERBY-1016: --------------------------------------- Reopening because this check in caused a test failure in jdbcapi/xaSimpleNegative.sql: *** Start: xaSimpleNegative jdk1.6.0_24 derbyall:xa 2011-12-06 01:06:38 *** 193 del < IJ ERROR: XAER_NOTA 193a193 > IJ ERROR: XAER_PROTO Test Failed. > javax.transaction.xa.forget (Xid) raises XAER_NOTA exception instead of > XA_PROTO on a prepared transaction > ---------------------------------------------------------------------------------------------------------- > > Key: DERBY-1016 > URL: https://issues.apache.org/jira/browse/DERBY-1016 > Project: Derby > Issue Type: Bug > Components: JDBC > Affects Versions: 10.1.3.1, 10.2.1.6 > Reporter: Kathey Marsden > Assignee: Jayaram Subramanian > Labels: derby_triage10_5_2 > Fix For: 10.9.0.0 > > Attachments: DERBY-1016.diff, DERBY-1016.patch, DERBY-1016.patch, > DERBY-1016_Patch_1.diff, ReproDerby1016.java, derby1016-donotcommit.diff, > derby1016-stat.txt, runoutputNov30.out, utilXid.java > > > javax.transaction.xa.forget (Xid) raises XAER_NOTA exception instead of > XA_PROTO on a prepared transaction > I posted a question to derby-dev about this and heard no response so am > assuming it is indeed a bug. > in the XA+ > specification, it seems like xa_forget should only be valid for a > heuristically completed transaction, so should be XAER_PROTO > and not XAER_NOTA. > In xaStateTran.sql we have this case: > -- get back into prepared state > xa_start xa_noflags 50; > insert into xastate values(2); > xa_end xa_success 50; > xa_prepare 50; > select * from global_xactTable where gxid is not null order by gxid; > -- the following should error XAER_NOTA > xa_forget 50; > The user code I am looking at handles forget like this. They expect > XAER_PROTO in this case. > > try { > xaRes.forget(xidList[i]); > System.out.print("XA-Transaction [" + (i+1) + "] > Forgotten. \n" ); > } catch (XAException XAeForget) { > if ( XAeForget.errorCode == > XAException.XAER_PROTO ) { > System.out.print("XA-Transaction [" + (i+1) > + "] not heuristically completed yet - Rolling Back instead. \n" ); > xaRes.rollback(xidList[i]); > System.out.print("XA-Transaction [" + (i+1) > + "] Rolled Back. \n" ); > } > if ( XAeForget.getMessage() != null ) { > System.out.println("XAException " + > XAeForget.getMessage() ); > -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira