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] Updated: (DERBY-1454) DRDA Protocol Exception when DSS is exactly 32767 in length
Date Sat, 24 Jun 2006 17:56:30 GMT
     [ http://issues.apache.org/jira/browse/DERBY-1454?page=all ]

Bryan Pendleton updated DERBY-1454:
-----------------------------------

    Attachment: newBug.java

Attached as 'newBug.java' is a simple repro program that you can run to demonstrate the
bug for yourself. Compile it, then start up the Network Server and
run the program with "java newBug 12749". That exact length for column
"c2" will trigger the edge case you've found.


> DRDA Protocol Exception when DSS is exactly 32767 in length
> -----------------------------------------------------------
>
>          Key: DERBY-1454
>          URL: http://issues.apache.org/jira/browse/DERBY-1454
>      Project: Derby
>         Type: Sub-task

>   Components: Network Server
>     Versions: 10.2.0.0, 10.1.3.0, 10.1.3.1
>     Reporter: Bryan Pendleton
>     Assignee: Bryan Pendleton
>  Attachments: newBug.java
>
> The server is disconnecting the client connection.  Client is sending a CNTQRY, the server
is receiving it 
> and then server disconnects the client.   When I start the server, after a while, I see
the message
> agentThread[DRDAConnThread_4,5,main].
> Further debugging, this message gets printed out  because of the agentError that is thrown
in splitQRYDTA.
> The error seems to come from this part of the code  in splitQRYDTA,  It hits the temp.length==0
case.
>    private void splitQRYDTA(DRDAStatement stmt, int blksize) throws SQLException,
>            DRDAProtocolException
>    {
>        // make copy of extra data
>        byte [] temp = writer.copyDSSDataToEnd(blksize);
>        // truncate to end of blocksize
>        writer.truncateDSS(blksize);
>        if (temp.length == 0)
>            agentError("LMTBLKPRC violation: splitQRYDTA was " +
>                "called to split a QRYDTA block, but the " +
>                "entire row fit successfully into the " +
>                "current block. Server rowsize computation " +
>                "was probably incorrect (perhaps an off-by-" +
>                "one bug?). QRYDTA blocksize: " + blksize);
>        stmt.setSplitQRYDTA(temp);
>    }
>   In doneData and writeFDODTA, it looks like if (writer.getDSSLength() >= blksize)
 , then the splitQRYDTA 
> is called. From testing, it seems like they are hitting an edge case, where the writer.getDSSLength()

> is equal to blksize and this DSS is the only dss in the send buffer. 

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