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

Benjamin Lerer edited comment on CASSANDRA-12838 at 10/27/16 5:08 PM:
----------------------------------------------------------------------

Thanks for the patch. 
My only nit is that I found the calls like 
{{version.compareTo(ProtocolVersion.V5) >= 0}} difficult to read. I would 
prefer to have something like 
{{version.isGreaterOrEqualsTo(ProtocolVersion.V5)}} even if internally the 
methods use {{compareTo}}.

In an offline discussion, [~snazy] mentioned to me that he would prefer a 
different name than {{ProtocolVersion}} as it conflits with the java driver 
class (but he won't fight for it).
As far as I am concerned, I do not have any problem with the name as the 
conflict is limited to some test classes. So, I let you decide what you want to 
do about it.  


was (Author: blerer):
Thanks for the patch. 
My only nit is that I found the call like 
{{version.compareTo(ProtocolVersion.V5) >= 0 }} difficult to read. I would 
prefer to have something like 
{{version.isGreaterOrEqualsTo(ProtocolVersion.V5)}} even if internally the 
methods use {{compareTo}}.

In an offline discussion, [~snazy] mentioned to me that he would prefer a 
different name than {{ProtocolVersion}} as it conflits with the java driver 
class (but he won't fight for it).
As far as I am concerned, I do not have any problem with the name as the 
conflict is limited to some test classes. So, I let you decide what you want to 
do about it.  

> Extend native protocol flags and add supported versions to the SUPPORTED 
> response
> ---------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-12838
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12838
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: CQL
>            Reporter: Stefania
>            Assignee: Stefania
>             Fix For: 3.x
>
>
> We already use 7 bits for the flags of the QUERY message, and since they are 
> encoded with a fixed size byte, we may be forced to change the structure of 
> the message soon, and I'd like to do this in version 5 but without wasting 
> bytes on the wire. Therefore, I propose to convert fixed flag's bytes to 
> unsigned vints, as defined in CASSANDRA-9499. The only exception would be the 
> flags in the frame, which should stay as fixed size.
> Up to 7 bits, vints are encoded the same as bytes are, so no immediate change 
> would be required in the drivers, although they should plan to support vint 
> flags if supporting version 5. Moving forward, when a new flag is required 
> for the QUERY message, and eventually when other flags reach 8 bits in other 
> messages too, the flag's bitmaps would be automatically encoded with a size 
> that is big enough to accommodate all flags, but no bigger than required. We 
> can currently support up to 8 bytes with unsigned vints.
> The downside is that drivers need to implement unsigned vint encoding for 
> version 5, but this is already required by CASSANDRA-11873, and will most 
> likely be required by CASSANDRA-11622 as well.
> I would also like to add the list of versions to the SUPPORTED message, in 
> order to simplify the handshake for drivers that prefer to send an OPTION 
> message, rather than rely on receiving an error for an unsupported version in 
> the STARTUP message. Said error should also contain the full list of 
> supported versions, not just the min and max, for clarity, and because the 
> latest version is now a beta version.
> Finally, we currently store versions as integer constants in {{Server.java}}, 
> and we still have a fair bit of hard-coded numbers in the code, especially in 
> tests. I plan to clean this up by introducing a {{ProtocolVersion}} enum.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to