[ 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