Skip to content

Cassandra version 5: unsupported protocol error #1750

@testisnullus

Description

@testisnullus

What version of Cassandra are you using?

5

What version of Gocql are you using?

v1.6.0

What version of Go are you using?

go1.21.6 linux/amd64

What did you do?

Trying to establish a session with the Cassandra v5 cluster (inside the Docker container) using native protocol v5. I saw that the version 5 protocol was added already, but it seems it is not working properly for some reason. I've debugged the connection process and found that the error happened during the readHeader() function execution.
So, the process of connection according to logs looks like this:

stream: 1
framer: &{5 16 <nil> 9 <nil> [] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [] map[]}
p[byte]: [133 0 0 0 0 0 0 0 0]
p[:1]: [133]
version 5

stream: 64
framer: &{5 16 <nil> 9 <nil> [] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [] map[]}
p[byte]: [133 0 0 1 6 0 0 0 102]
p[:1]: [133]
version 5

stream: 128
framer: &{5 16 <nil> 9 <nil> [] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [] map[]}
p[byte]: [114 0 0 64 2 0 0 0 0]
p[:1]: [114]
version 114
_error here_

I've compared the connection process using 5 version with 3 and 4 versions of the protocol. It seems pretty similar, except the one thing. When we use the 5 version the first byte always changes from 133 to 114. Now, I am reading the native protocol 5 specification to understand what changes should be made to fix the issue. Will be glad to receive any suggestions regarding it.

Code snippet:

	cluster := gocql.NewCluster("172.17.0.2")
	cluster.Consistency = gocql.Quorum
	cluster.ProtoVersion = 5
	cluster.ConnectTimeout = time.Second * 10
	session, err := cluster.CreateSession()
	if err != nil {
		log.Println(err)
		return
	}
	defer session.Close()

What did you expect to see?

Successfully established connection

What did you see instead?

Error from the gocql:

2024/05/13 14:58:01 gocql: unable setup control conn 172.17.0.2:9042: gocql: unsupported protocol response version: 114
2024/05/13 14:58:01 gocql: unable to create session: unable to connect to initial hosts: gocql: unsupported protocol response version: 114

Cassandra logs:

ERROR [epollEventLoopGroup-5-5] 2024-05-13 11:58:01,959 NoSpamLogger.java:110 - 14ded18b invalid, unrecoverable CRC mismatch detected in frame header. Read 1920, Computed 15624576
WARN  [epollEventLoopGroup-5-5] 2024-05-13 11:58:01,960 NoSpamLogger.java:107 - Protocol exception with client networking: 14ded18b invalid, unrecoverable CRC mismatch detected in frame header. Read 1920, Computed 15624576

If you are having connectivity related issues please share the following additional information

Describe your Cassandra cluster

please provide the following information

Nodetool status:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load        Tokens  Owns (effective)  Host ID                               Rack 
UN  172.17.0.2  151.72 KiB  16      100.0%            222503c6-0030-43a6-a365-c61aae4b9765  rack1

Cqlsh output:

root@2e8cb70614b1:/# cqlsh
WARNING: cqlsh was built against 5.0-beta1, but this server is 5.0.  All features may not work!
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.2.0 | Cassandra 5.0-beta1 | CQL spec 3.4.7 | Native protocol v5]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions