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 "Kathey Marsden (JIRA)" <de...@db.apache.org> on 2005/06/07 01:12:40 UTC

[jira] Commented: (DERBY-341) Client should disallow XAConnection getConnection() when a global transaction has been started and a logical connection has already been obtained

    [ http://issues.apache.org/jira/browse/DERBY-341?page=comments#action_12312805 ] 

Kathey Marsden commented on DERBY-341:
--------------------------------------

Looking briefly at this issue I see that 
NetConnection.flowReconnect
does not actually flow anything, but rather sets up a cache of what to flow on the first sql statement.  The trouble is that the next thing that flows may not be an sql statement but rather could be an xa call or 
maybe other things.  This will cause unpredictable results on the next call.

Some options might  be 
1) Get rid of the optimization and just flow the reset when we call getConnection.
2) Instead of keeping a separate cache, write the bytes into the agents write buffer in Reply.java, so it won't be missed regardless of the call.

Regardless, a fair amount of pull apart and put back together is required to fix this bug.
Since it is a negative case, I suggest it be deferrred to 10.2 with a comment in the release notes.







> Client should disallow XAConnection getConnection() when a global transaction has been started and a logical connection has already been obtained
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-341
>          URL: http://issues.apache.org/jira/browse/DERBY-341
>      Project: Derby
>         Type: Bug
>     Versions: 10.1.0.0
>     Reporter: Kathey Marsden
>      Fix For: 10.2.0.0

>
> If a logical connection has already been obtained,  client should disallow  XAConnection getConnection if a global transaction has been started and a logical connection has already been obtained
> Repro:
> With the client the script below does not give an error.
> ij> connect 'wombat;create=true';
> ij> disconnect;
> ij> xa_datasource 'wombat';
> ij> xa_connect user 'APP' password 'xxx';
> Connection number: 3.
> ij> -- start new transaction
> xa_start xa_noflags 0;
> ij> xa_getconnection;
> ij> -- Should not be able to get connection again
> xa_getconnection;
> With embedded we get.
> ERROR XJ059: Cannot close a connection while a global transaction is still active.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira