You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Sam Tunnicliffe (Jira)" <ji...@apache.org> on 2021/01/05 15:30:00 UTC

[jira] [Commented] (CASSANDRA-16354) python dtest fails to talk to 2.2 using protocol 4 but cqlsh has no issue

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

Sam Tunnicliffe commented on CASSANDRA-16354:
---------------------------------------------

[~aholmber] the reasons for distinguishing between protocol v4 implementations in C* versions 2.1/2.2 and 3.0 are described in CASSANDRA-15193. The paging state serialization format changed between 2.2 and 3.0 but this isn't versioned in the native protocol, so mixed version clusters could become unstable if requests with a paging state obtained from one version were sent to a node with a different version (e.g. client gets the first page from a 3.0 node and requests the next page from a 2.2 node).

The server-side cap was introduced as clients are often not controlled by the server admins. Restricting the versions which the server will permit to be negotiated means that a rolling upgrade can be performed in such a way as to ensure that the serialization issues are not encountered (it's a PITA, but this makes it possible).

I added the override you mentioned to \{{batch_test.py}} (though I don't recall exactly why that was necessary), but I think the upgrade tests were either disabled or in a state of perpetual failure at that time, so I missed it there. I'd prefer to add the override in tests rather making the suggested changes on the server side, as the entire point of the capping is to make 2.x -> 3.x upgrades safe, which this would subvert.

By default though, there should be no cap enforced. Do you know why during the test the 3.0 node is capping at v3?

> python dtest fails to talk to 2.2 using protocol 4 but cqlsh has no issue
> -------------------------------------------------------------------------
>
>                 Key: CASSANDRA-16354
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16354
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CI, Test/dtest/python
>            Reporter: David Capwell
>            Assignee: Adam Holmberg
>            Priority: Normal
>             Fix For: 4.0-beta
>
>
> https://app.circleci.com/pipelines/github/dcapwell/cassandra/850/workflows/79486fdd-06d0-4d04-aa32-0fa648182356/jobs/5019/artifacts
> We see that upgrade tests which talk to 2.2 clusters fail with the following error
> {code}
> >   ???
> E   cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'127.0.0.1:9042': DriverException('ProtocolError returned from server while using explicitly set client protocol_version 4',)})
> {code}
> For some reason, setting protocol version 4 causes 2.2 to fail, but this does not happen when using cqlsh (from trunk) 
> {code}
> ./bin/cqlsh --protocol-version=4
> Connected to Test Cluster at 127.0.0.1:9042.
> [cqlsh 5.0.1 | Cassandra 2.2.20-SNAPSHOT | CQL spec 3.3.1 | Native protocol v4]
> Use HELP for help.
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org