cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <>
Subject [jira] [Updated] (CASSANDRA-1788) reduce copies on read, write paths
Date Thu, 14 Jul 2011 00:53:00 GMT


Jonathan Ellis updated CASSANDRA-1788:

    Reviewer: brandon.williams

> reduce copies on read, write paths
> ----------------------------------
>                 Key: CASSANDRA-1788
>                 URL:
>             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.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:


View raw message