[ 
https://issues.apache.org/jira/browse/CASSANDRA-8100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

C. Scott Andreas updated CASSANDRA-8100:
----------------------------------------
    Component/s: Streaming and Messaging

> Remove payload size from intra-cluster messages
> -----------------------------------------------
>
>                 Key: CASSANDRA-8100
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8100
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Streaming and Messaging
>            Reporter: Sylvain Lebresne
>            Priority: Major
>             Fix For: 4.x
>
>
> Intra-cluster messages ship with the [size of their 
> payload|https://github.com/apache/cassandra/blob/8d8fed52242c34b477d0384ba1d1ce3978efbbe8/src/java/org/apache/cassandra/net/MessageOut.java#L118]
>  before said payload. We mostly don't need it however as deserializers don't 
> rely on it to know when to stop. The [only reason we need 
> it|https://github.com/apache/cassandra/blob/8d8fed52242c34b477d0384ba1d1ce3978efbbe8/src/java/org/apache/cassandra/net/MessageIn.java#L86]
>  is that all responses message use the same {{Verb}} and so in those case we 
> use the message callback to find out the proper serializer, but in the 
> (unlikely) case where the callback has expired, we don't know which 
> deserializer to use and so we use the payload size to skip the payload.
> Having to ship the payload size means we need to be able to compute it. Which 
> means we have to implement the serializedSize for all of your serializer (not 
> a huge deal but annoying), but more importantly, this makes it impossible to 
> write a request response truly incrementally (CASSANDRA-8099) since you have 
> to buffer everything in memory just to compute the serialized size.
> So I propose we remove the payload size from messages. Instead, we can assign 
> specific {{Verb}} to each response type (getting rid of 
> {{CallbackDeterminedSerializer}}). We can then get rid of all the 
> serializedSize methods (for upgrade, when we need to generate messages to old 
> nodes, we could just write the message in a ByteBuffer, write the resulting 
> size and then write the buffer).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to