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

Ariel Weisberg commented on CASSANDRA-10246:
--------------------------------------------

It seems like existing clients will never be able to use named values in 
batches without updating the protocol. There is no way to correctly decode far 
enough to get to the flags to find out how to correctly decode the lists.

It seems like there is nothing we can do to save old clients and give them a 
good error.

What is the story with protocol changes like this? It seems like we need a 
version bump otherwise newer versions of the client library can't identify that 
the server is unable to correctly handle the suggestion in CASSANDRA-10247.

Speaking of clients this also means we need to update all the client libraries 
to refuse to used named values in batches when the server is a version that 
doesn't support CASSANDRA-10247 as well as to encode using that approach (or 
some other).

> Named values don't work with batches
> ------------------------------------
>
>                 Key: CASSANDRA-10246
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10246
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL
>            Reporter: Michael Penick
>            Assignee: Ariel Weisberg
>              Labels: client-impacting
>             Fix For: 2.1.x, 2.2.x, 3.1
>
>
> This is broken at the protocol-level and in the implementation.
> At the protocol-level the {{<flags>}} component of the batch comes after the 
> queries. That means the protocol parser would need to read ahead (and back 
> track) to determine the values encoding and correctly read the values from 
> the query entries. Also, a batch-level setting for named values forces all 
> queries to use the same encoding. Should batches force a single, homogenous 
> query value encoding? (This is confusing)
> In the implementation, values are indiscriminately read using 
> {{CBUtil.readValueList()}}, and the batch flags are never checked (for 
> {{(Flag.NAMES_FOR_VALUES}}) to see if {{CBUtil.readNameAndValueList()}} 
> should be called instead: 
> https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/transport/messages/BatchMessage.java#L64
> Proposed solution: CASSANDRA-10247



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

Reply via email to