The native protocol is the name we give to the protocol used between CQL
drivers and the server. That protocol is versioned and a new version,
4, was introduced in Cassandra 2.2.0. We recently uncovered a compatibility
in that 4th version (https://issues.apache.org/jira/browse/CASSANDRA-10880)
that made said version of the protocol not fully compatible between 2.2.X
3.Y. As a consequence, you _must_ ensure that your clients use the protocol
version 3 if you plan an upgrade from any 2.2.X version to any 3.Y version.
Ensuring that might requires forcing the protocol version in the client
used. For instance, in the DataStax Java driver, you can do so by calling
`.withProtocolVersion(ProtocolVersion.V3)` on your `Cluster.Builder` object.
The bug in question affects the automatic paging of result sets that the
protocol provides: the first page or results is always sent correctly, but
requesting the next pages might result in a failure. This mean that in
you can disregard this problem if you know that you are not using said
but we still strongly encourage sticking to the protocol v3 for upgrade as
downsides are very minor (see below) and not worth taking risk.
The changes in the protocol v4 are relatively minor, and so forcing the use
v3 are relatively minor downsides, namely:
- the use of the recently added CQL type `date`, `time`, `tinyint` and
`smallint` involves sending slightly bigger metadata in v3 that in v4. The
resulting performance difference is unlikely to be noticeable.
- schema changes related to User Defined Functions are notified to clients
"keyspace change" in v3 which, being imprecise, might require a client
to request more schema metadata to update its own copy of said metadata.
is again a very minor inefficiently.
- The protocol v4 has a feature that allows the server to send warnings to
clients. This is as of yet little used by the server and in which case
it is, the warning is also logged server side.
Note that using the protocol v4 is fine once you have finished with your
upgrade and all your nodes are on 3.Y. The problem is only with cluster
2.2.X and 3.Y nodes.
The Cassandra dev team