[
https://issues.apache.org/jira/browse/CASSANDRA-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13079089#comment-13079089
]
Hudson commented on CASSANDRA-1788:
-----------------------------------
Integrated in Cassandra #1001 (See
[https://builds.apache.org/job/Cassandra/1001/])
Reduce copies on read/write paths.
Patch by jbellis reviewed by brandonwilliams for CASSANDRA-1788
brandonwilliams :
http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1153678
Files :
*
/cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java
* /cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
*
/cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
*
/cassandra/trunk/test/unit/org/apache/cassandra/service/SerializationsTest.java
* /cassandra/trunk/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
* /cassandra/trunk/src/java/org/apache/cassandra/net/Header.java
* /cassandra/trunk/src/java/org/apache/cassandra/net/Message.java
* /cassandra/trunk/test/unit/org/apache/cassandra/net/MessageSerializer.java
* /cassandra/trunk/test/unit/org/apache/cassandra/db/SerializationsTest.java
*
/cassandra/trunk/src/java/org/apache/cassandra/net/CompactEndpointSerializationHelper.java
* /cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
* /cassandra/trunk/test/unit/org/apache/cassandra/net
> 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-v6.txt, 1788-v7.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