db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-1044) [xa] client XAConnection.getConnection() does not have the correct default isolation level if set by an earlier connection obtained from the same XAConnection
Date Mon, 20 Mar 2006 16:39:15 GMT
     [ http://issues.apache.org/jira/browse/DERBY-1044?page=all ]

Kathey Marsden updated DERBY-1044:
----------------------------------

    Attachment: IsoChange.java

I looked at this a bit closer and it seems that it is the
return value of getTransactionIsolation that is wrong.
The connection acts like READ_COMMITTED so the two don't match.


See attached standalone repro: Start Network Server and run:
java -Dframework=DerbyNetClient IsoChange


D>java -Dframework=DerbyNetClient IsoChange
10.2.0.0 alpha
Apache Derby
Apache Derby Network Client JDBC Driver
done creating  table

setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED
conn.getTransactionIsolation()TRANSACTION_READ_UNCOMMITTED:1
BEHAVIOUR MATCHES READ_UNCOMMITTED

Get a new connection with XAConnection.getConnection
Isolation level should be reset to READ_COMMITTED
conn.getTransactionIsolation()TRANSACTION_READ_UNCOMMITTED:1
LOCK TIMEOUT: BEHAVIOUR MATCHES READ_COMMITTED


> [xa] client XAConnection.getConnection()  does not have the correct  default isolation
level if set by an earlier connection obtained from the same XAConnection
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1044
>          URL: http://issues.apache.org/jira/browse/DERBY-1044
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>     Versions: 10.1.2.3, 10.1.3.0, 10.2.0.0, 10.1.2.2
>     Reporter: Kathey Marsden
>      Fix For: 10.1.3.0, 10.2.0.0, 10.1.2.4
>  Attachments: IsoChange.java
>
> If the isolation level is set on a connection obtained with XAConnection.getConnection()
 and then another connection is obtained from the same XAConnection, then the isolation will
not be the default READ_COMMITTED but will be the isolation level set on the previous connection.
 
> See this code in checkDataSource.java
> I will add a reference to this bug
>                cs1 = xac.getConnection();
> 		printState("new handle - local ", cs1);
> 		cs1.close();
> 		xar.start(xid, XAResource.TMJOIN);
> 		cs1 = xac.getConnection();
>                 cs1.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
> 		printState("pre-X1 commit - local", cs1);
> 		xar.start(xid, XAResource.TMJOIN);
> 		printState("pre-X1 commit - X1", cs1);
> 		xar.end(xid, XAResource.TMSUCCESS);
> 		printState("post-X1 end - local", cs1);
> 		xar.commit(xid, true);
> 		printState("post-X1 commit - local", cs1);
> 		cs1.close();
> 		System.out.println("Some more isolation testing using SQL and JDBC api");
>                 //  The  initial isolation level for this connection is REPEATABLE_READ.
 Left over from the last connection.
>                // It should be READ_COMMITTED
> 		cs1 = xac.getConnection();
> 		s = cs1.createStatement();
> 		printState("initial local", cs1);

-- 
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


Mime
View raw message