|
Kristian Waagan made changes - 02/Apr/08 09:55 PM
Kristian Waagan made changes - 02/Apr/08 09:55 PM
Kristian Waagan made changes - 02/Apr/08 10:05 PM
Kristian Waagan made changes - 02/Apr/08 10:05 PM
In the issue description, I wrote the following:
----- Kristian wrote: Further, I also suspect the concept of a deferred reset has been introduced because of the feature/bug described by this Jira issue. A deferred reset seems to be a mechanism to avoid a round-trip to validate the newly changed DataSource properties (typically user, password and security mechanism). I will look into removing code related to deferred resets as well. If you have historic information about these parts of the driver, I would appreciate if you share it with the community if possible. ----- After reading some sections in the DRDA spec, I think that statement is wrong. Sending what is called the deferred reset sequence in the driver (EXCSAT, ACCSEC, SECCHK and ACCRDB), is specified by the DRDA spec. It says the source server *can* send it if it wants to reuse the connection for another application or transaction, but I haven't found a place where it says it has to send it. I thought about sending only SECCHK and ACCRDB to reduce the work, but this is not allowed by the DRDA spec (but I think it is allowed by the network server). My current conclusion is that the deferred reset code still has to be used and cannot be removed. The code related to picking up changes in the data source can however still be removed. Implementing an alternative "reset protocol" might be possible, but that would be 10.5 or maybe even 11. I'm sure a more efficient scheme can be implemented, but it is not clear to me what the solution space looks like bounded by the DRDA spec. BTW; derbyall ran cleanly for the 1a patch. Committed 'derby-3581-1a-remove_user_password_iteration1.diff' to trunk with revision 648280.
More patches will follow.
Kristian Waagan made changes - 15/Apr/08 03:16 PM
'derby-3581-2a-remove_datasource_iteration1.diff' removes the usage of the data source when the connection is reset. The reset still happens when a new logical connection is obtained, so this change would only affect pooled and xa connections.
Further, since the reset method is only ever called with the recomputeFromDataSource variable set to true, I plan to simplify the methods and remove that variable. Patch ready for review. J2EEDataSourceTest, XATest and XATransactionTest ran cleanly. I'm running full regression tests.
Kristian Waagan made changes - 18/Apr/08 09:02 AM
I'm a bit torn on what to do regarding backporting. I know there are bugs in this area that might have to be fixed in the 10.4 branch. On the other hand, these changes are more like cleanup issues.
I'll wait for feedback, if I hear nothing I think I'll backport to 10.4.
Kristian Waagan made changes - 18/Apr/08 09:05 AM
Committed patch 2a to trunk with revision 649473.
Regression tests ran cleanly (except for derbyrunjartest in derbyall, which also failed before this patch was applied).
Kristian Waagan made changes - 18/Apr/08 11:55 AM
Kristian Waagan made changes - 18/Apr/08 11:55 AM
Backported patches 1a and 2a to 10.4 with revision 663893.
suites.All and derbyall ran successfully (Sun JDK 1.6.0, Solaris 10).
Kristian Waagan made changes - 06/Jun/08 11:05 AM
'derby-3581-3a-remove_recomputeFromDataSource_flag.diff' removes a flag that is always true.
It serves no purpose any more, and the associated functionality will not be used/supported by the Derby client driver. Adding it again at a later time, for instance if the community wants to create an enterprise level client side pooling agent, should be pretty easy. The removal also makes the code easier to read and understand. Regression tests ran without failures (Sun JDK 1.6.0, Solaris 10). Patch ready for review.
Kristian Waagan made changes - 11/Jun/08 09:47 AM
Kristian Waagan made changes - 11/Jun/08 09:48 AM
This comment in NetConnection.completeReset() also needs to be updated when recomputeFromDataSource is removed (is 3341 a typo, by the way?):
// NB! Override the recomputFromDataSource flag. // This was done as a temporary, minimal intrusive fix to support // JDBC statement pooling. // See 'derby-3581-3b-remove_recomputeFromDataSource_flag.diff' also removes the comment (and an unused import).
Thanks for the correction Knut Anders! I plan to commit patch 3b later today.
Kristian Waagan made changes - 12/Jun/08 09:52 AM
Committed 'derby-3581-3b-remove_recomputeFromDataSource_flag.diff' to trunk with revision 667568.
I plan to backport it to 10.4 later, because an upcoming fix under
Kristian Waagan made changes - 13/Jun/08 03:21 PM
Backported patch 3b to the 10.4 branch with revision 672749. The commit also included the patches for
Kristian Waagan made changes - 30/Jun/08 12:41 PM
Don't plan to do any more work on this.
No problems reported.
Kristian Waagan made changes - 10/Jul/08 09:46 AM
Rick Hillegas made changes - 04/Aug/08 08:24 PM
Myrna van Lunteren made changes - 04/May/09 06:21 PM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I have run suites.All without failures, and will continue the work by checking if and for what the data source reference is needed when resetting a physical connection.
Note that there is no way to change the user name and/or password except for getting a new connection. One can either change the values held be the creating data source, or once can use getPooledConnection(user, password).
Patch ready for review.
I have started derbyall as well, and will report back if it fails.