You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Myrna van Lunteren (Resolved) (JIRA)" <ji...@apache.org> on 2011/12/05 23:38:39 UTC
[jira] [Resolved] (DERBY-1016) javax.transaction.xa.forget (Xid)
raises XAER_NOTA exception instead of XA_PROTO on a prepared transaction
[ https://issues.apache.org/jira/browse/DERBY-1016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Myrna van Lunteren resolved DERBY-1016.
---------------------------------------
Resolution: Fixed
Fix Version/s: 10.9.0.0
Issue & fix info: High Value Fix,Known fix,Newcomer,Repro attached (was: Repro attached,Patch Available,Newcomer,Known fix,High Value Fix)
I committed the last patch (my modifications based on Jayaram's) with revision 1210686.
> 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