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 2006/03/21 21:59:25 UTC
[jira] Commented: (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
[ http://issues.apache.org/jira/browse/DERBY-1044?page=comments#action_12371293 ]
Kathey Marsden commented on DERBY-1044:
---------------------------------------
I verified that this is a generic problem for connections obtained from PooledConnections so is not limitted to XA. Should I open another issue for that or is it ok to just fix it under this one?
This small change fixes the symptom but I am a bit perplexed about why it was explicitly set to false to *not* recompute the state from the datasource before and the difference in the new connection case where it calls lightreset.
Regardless, hopefully I will have a patch for this issue soon. Please send on any comments or insight. Thanks.
Index: java/client/org/apache/derby/client/ClientPooledConnection.java
===================================================================
--- java/client/org/apache/derby/client/ClientPooledConnection.java (revision 387603)
+++ java/client/org/apache/derby/client/ClientPooledConnection.java (working copy)
@@ -173,7 +173,7 @@
createLogicalConnection();
if (!newPC_) {
- physicalConnection_.reset(logWriter_, user_, password_, ds_, false); // false means do not recompute
+ physicalConnection_.reset(logWriter_, user_, password_, ds_, true); // true means do recompute
}
// properties from the dataSource
// properties don't change
> [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
> Assignee: Kathey Marsden
> Priority: Critical
> 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