[ 
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

Reply via email to