db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sunitha Kambhampati (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1454) DRDA Protocol Exception when DSS is exactly 32767 in length
Date Sat, 24 Jun 2006 19:29:30 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1454?page=comments#action_12417647 ] 

Sunitha Kambhampati commented on DERBY-1454:
--------------------------------------------

Thanks much Bryan for posting the patch.  The changes look good to me.  I successfully applied
the derby-1454.diff patch on the trunk. I ran the test derbynet/prepStmt with both derbynet
and derbynetclient frameworks and test passes with fix  and fails without the fix, with a
disconnect exception.  Thanks for adding such good comments to the testcase. 

+1 for commit.   

I agree with you, that this is not a regression.  

Thanks.
Sunitha.

> 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: derby-1454.diff, 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