[ http://issues.apache.org/jira/browse/DERBY-1148?page=all ]
Deepa Remesh updated DERBY-1148:
--------------------------------
Attachment: derby-1148_v2.diff
derby-1148_v2.status
XA_TransactionIsolation.html
I am attaching another patch 'derby-1148_v2.diff' which is based on proposal 2
---- change the getTransactionIsolation method in client's Connection class to
get the transaction isolation from the server. It addresses Kathey's concern of
auto-commit by changing/restoring auto-commit inside the method call.
I have tried to address all comments from Kathey in this patch.
Summary of patch:
* Changes getTransactionIsolation method in
org.apache.derby.client.am.Connection class to get the isolation level from
server. The built-in function "CURRENT ISOLATION" is used for this. It throws
SQLException in case of failures. At the start of the method, the current
auto-commit value is stored in a variable. When executing the function,
auto-commit is set to false. At the end of the method, auto-commit value is
restored. As it is the client which drives the auto-commit, this strategy of
locally changing the auto-commit works.
* Removes the excludes for DERBY-1148 and DERBY-1035 from checkDataSource test.
Adds a test for transaction suspend/resume in checkDataSource test. Updates
master files
With this patch, I have run derbynetclientmats with Sun jdk 1.4.2 on Windows
XP. I also ran checkDataSource.java and checkDataSource30.java with embedded
and client framework. No failures. Please take a look at this patch and provide
feedback.
If this change looks okay, it will solve both DERBY-1148 and DERBY-1035. Sorry
for going back and forth between the proposed solutions. As I mentioned
earlier, solving the general problem seems better than trying to address
individual cases. I have also attached a small write-up
'XA_TransactionIsolation.html' based on my understanding of how isolation
levels change across transaction boundaries.
> Client XA getTransactionIsolation() does not return the correct isolation
> level when rejoining a global transaction
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-1148
> URL: http://issues.apache.org/jira/browse/DERBY-1148
> Project: Derby
> Type: Bug
> Components: Network Client
> Versions: 10.2.0.0
> Reporter: Kathey Marsden
> Assignee: Deepa Remesh
> Fix For: 10.2.0.0
> Attachments: SetIsolationUsingSQL.java, XACheckIsolation.java,
> XACheckIsolation_2.java, XA_TransactionIsolation.html,
> derby-1148-draft1.diff, derby-1148-draft1.status, derby-1148_v1.diff,
> derby-1148_v1.status, derby-1148_v2.diff, derby-1148_v2.status
>
> When rejoining a global transaction, client does not report the correct
> isolation level with a
> getTransactionIsolation(). The server side isolation should be ok I think.
> This was discovered when testing the fix for DERBY-1044. After the fix for
> DERBY-1044, there is a new diff in the test, but the fix for DERBY-1044 just
> exposed this issue. The output for the test was correct before by
> circumstance.
> I will put comments with this bug in checkDataSource test.
> // now re-join the transaction, should pick up the read-only
> // and isolation level from the transaction,
> // holdability remains that of this handle.
> xar.start(xid, XAResource.TMJOIN);
> printState("re-join X1", cs1);
> xar.end(xid, XAResource.TMSUCCESS);
--
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