[ 
https://issues.apache.org/jira/browse/CASSANDRA-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13067247#comment-13067247
 ] 

Brandon Williams edited comment on CASSANDRA-1788 at 7/18/11 7:56 PM:
----------------------------------------------------------------------

With v5 (#2) I'm still periodically receiving bad magic in a mixed cluster (on 
the node with the patch applied):

{noformat}
ERROR 19:54:07,747 Fatal exception in thread Thread[Thread-13,5,main]
java.io.IOError: java.io.IOException: invalid protocol header
        at 
org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:125)
Caused by: java.io.IOException: invalid protocol header
        at 
org.apache.cassandra.net.MessagingService.validateMagic(MessagingService.java:467)
        at 
org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:107)
{noformat}

      was (Author: brandon.williams):
    With v5 (#2) I'm still periodically receiving bad magic in a mixed cluster:

{noformat}
ERROR 19:54:07,747 Fatal exception in thread Thread[Thread-13,5,main]
java.io.IOError: java.io.IOException: invalid protocol header
        at 
org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:125)
Caused by: java.io.IOException: invalid protocol header
        at 
org.apache.cassandra.net.MessagingService.validateMagic(MessagingService.java:467)
        at 
org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:107)
{noformat}
  
> reduce copies on read, write paths
> ----------------------------------
>
>                 Key: CASSANDRA-1788
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1788
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 1.0
>
>         Attachments: 0001-setup.txt, 
> 0002-remove-copies-from-network-path.txt, 1788-v2.txt, 1788-v3.txt, 
> 1788-v4.txt, 1788-v5.txt, 1788-v5.txt, 1788.txt
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Currently, we do _three_ unnecessary copies (that is, writing to the socket 
> is necessary; any other copies made are overhead) for each message:
> - constructing the Message body byte[] (this is typically a call to a 
> ICompactSerializer[2] serialize method, but sometimes we cheat e.g. in 
> SchemaCheckVerbHandler's reply)
> - which is copied to a buffer containing the entire Message (i.e. including 
> Header) when sendOneWay calls Message.serializer.serialize()
> - which is copied to a newly-allocated ByteBuffer when sendOneWay calls packIt
> - which is what we write to the socket
> For deserialize we perform a similar orgy of copies:
> - IncomingTcpConnection reads the Message length, allocates a byte[], and 
> reads the serialized Message into it
> - ITcpC then calls Message.serializer().deserialize, which allocates a new 
> byte[] for the body and copies that part
> - finally, the verbHandler (determined by the now-deserialized Message 
> header) deserializes the actual object represented by the body
> Most of these are out of scope for 0.7 but I think we can at least elide the 
> last copy on the write path and the first on the read.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to