db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-614) Execution failed because of a Distributed Protocol Error
Date Tue, 22 Nov 2005 20:41:42 GMT
    [ http://issues.apache.org/jira/browse/DERBY-614?page=comments#action_12358300 ] 

Bryan Pendleton commented on DERBY-614:
---------------------------------------

Hi Kathey & Francois (& others):

I'm trying to write up a mini-design spec for changes to the DRDA implementation to resolve
this issue. But during my research, I've gotten myself pretty confused, and could use some
help. Can you consider the following questions and tell me what you think?

thanks in advance, bryan

1) Does the LMTBLKPRC protocol apply to invocations of callable statements? That is, if we
call a procedure, and it has output parameters, and the data in those parameters exceeds the
blocksize, should we split the query data and await a CNTQRY?

2) When we are returning externalized data as part of the response to a query, are there any
rules for the intermingling of the EXTDTA objects and the QRYDTA objects? Suppose, for example,
that a particular QRYDTA object contains the end of row 4, the entire contents of rows 5 and
6, and the start of row 7. I believe that the EXTDTA for rows 5 and 6 should be sent after
we send this QRYDTA, but I am not sure about the EXTDTA for rows 4 and 7. I guess what I am
asking is: is the rule "we send the EXTDTA for a particular row after the QRYDTA which contains
the *start* of this row", or is the rule: "we send the EXTDTA for a particular row after the
QRYDTA which contains the *end* of this row"?

3) At the JDBC user level, what JDBC API calls cause the qryrtndta parameter to be set to
FALSE. In the DRDA spec, I see: "The qryrtndta parameter specifies whether data is to be returned
with the command. If FALSE is sent on the command, the result is that only a positioning fetch
operation is performed." How does this situation actually arise in ordinary use? What sort
of client program would I write that would cause qryrtndta to be set to false?

4) Do you think that we have any tests in the test suite which validate the behavior of the
server when using both LMTBLKPRC protocol and QRYROWSET specification? I've been reading through
the DRDA spec's discussion of QRYROWSET handling, and although it does provide some rules
for how to handle the various combinations which arise, the rules are *extremely* complicated
and I'm nervous about accidentally breaking this processing.


> Execution failed because of a Distributed Protocol Error
> --------------------------------------------------------
>
>          Key: DERBY-614
>          URL: http://issues.apache.org/jira/browse/DERBY-614
>      Project: Derby
>         Type: Bug
>   Components: Network Server
>     Versions: 10.1.1.0
>  Environment: Linux 2.4, Sun JDK 1.4.2_07, full SYSINFO will be attached.
>     Reporter: Bryan Pendleton
>  Attachments: clientSideTrace.txt, clientStack.txt, derby-614.zip, derbyTrace.txt, query.txt,
serverSideTrace.txt, sysinfo.derby
>
> I am intermittently receiving Distributed Protocol Error exceptions in my client code.
Simultaneously,
> my derby.log is recording Distributed Protocol Error exceptions on the server side.
> I cannot reliably reproduce this problem. 
> However, the problem always occurs in the same section of my application, so I can at
least
> describe that section of my application. (I'll do so in an attachment).
> Here is the error I receive on the server side. Sometimes, the CODPNT is 2116 and the
> Error Code Value is 1d, rather than 2114 and e.
> 2005-10-05 02:10:23.663 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = BuildFar
> m), (DRDAID = GA0A0026.P7E6-4182154075488704215{136532}), Execution failed becau
> se of a Distributed Protocol Error:  DRDA_Proto_SYNTAXRM; CODPNT arg  = 2114; Er
> ror Code Value = e
> Execution failed because of a Distributed Protocol Error:  DRDA_Proto_SYNTAXRM;
> CODPNT arg  = 2114; Error Code Value = e
> 2005-10-05 02:10:23.663 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = BuildFar
> m), (DRDAID = GA0A0026.P7E6-4182154075488704215{136532}), null
> null
> org.apache.derby.impl.drda.DRDAProtocolException
>         at org.apache.derby.impl.drda.DRDAConnThread.throwSyntaxrm(Unknown Sourc
> e)
>         at org.apache.derby.impl.drda.DRDAConnThread.missingCodePoint(Unknown So
> urce)
>         at org.apache.derby.impl.drda.DRDAConnThread.parseCNTQRY(Unknown Source)
>         at org.apache.derby.impl.drda.DRDAConnThread.splitQRYDTA(Unknown Source)
>         at org.apache.derby.impl.drda.DRDAConnThread.writeFDODTA(Unknown Source)
>         at org.apache.derby.impl.drda.DRDAConnThread.writeQRYDTA(Unknown Source)
>         at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Sou
> rce)
>         at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)

-- 
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


Mime
View raw message