[
http://issues.apache.org/jira/browse/DERBY-815?page=comments#action_12364304 ]
Dyre Tjeldvoll commented on DERBY-815:
--------------------------------------
AB, your comment about the patch almost hit the nail on the head, but not
quite. The CliParam struct has field called isExt that indicates that the
parameter is external (in its own DSS). Just like the drdaType and the
drdaLength filelds can change (to my surprise), the isExt can go from true to
false for the same parameter in the same statement. In this case param 7 had
been marked as external, but was internal in this message. Hence the attempt to
read the separate DSS left the server waiting for more data, data which the
client was never going to send.
With the following change your repro goes through:
Index: java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
===================================================================
--- java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (revision
373136)
+++ java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (working copy)
@@ -3889,6 +3889,8 @@
}
final DRDAStatement.CliParam cp =
stmt.getCliParam(j);
+ cp.isExt = false; // <--- FIX
+
if (cp.drdaType != drdaType ||
cp.drdaLength != drdaLength) {
if (SanityManager.DEBUG) {
I'll polish up a proper patch and attach it when I've run derbyall. Sorry about
all the problems...
> Prevent unneeded object creation and excessive decoding in parseSQLDTA_work()
> -----------------------------------------------------------------------------
>
> Key: DERBY-815
> URL: http://issues.apache.org/jira/browse/DERBY-815
> Project: Derby
> Type: Sub-task
> Components: Network Server, Performance
> Versions: 10.0.2.2, 10.1.1.0, 10.1.2.0, 10.1.1.1, 10.1.1.2, 10.1.2.1,
> 10.1.3.0, 10.1.2.2
> Reporter: Knut Anders Hatlen
> Assignee: Dyre Tjeldvoll
> Priority: Minor
> Fix For: 10.2.0.0
> Attachments: d815_regress.java, derby-815.diff, derby-815.stat,
> derbyall_report.txt
>
> Reported by Kathey Marsden in DERBY-212:
> In reviewing the Network Server Code and profiling there were several
> areas that showed potential for providing performance
> improvement. Functions that need optimizing to prevent unneeded object
> creation and excessive decoding: parseSQLDTA_work()
--
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