[
https://issues.apache.org/jira/browse/CASSANDRA-16508?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeff Widman updated CASSANDRA-16508:
------------------------------------
Description:
I just ran `cqlsh` from `trunk` commit 2aa22ba99dcc1dacb07b7af31b2664e7db839063
against a Cassandra 3.11.10 docker image.
I expected that the newer cqlsh would down-negotiate from the v5 protocol to
the older v4 protocol.
Instead, I was surprised to get a server error about a beta protocol being used
without `BETA_FLAG` being set. I unfortunately had to reboot my computer, so I
lost the traceback but I can easily reproduce if needed.
I think what's happening is that this commit promoted v5 out of beta:
https://github.com/apache/cassandra/commit/c9d6c725dd0b4aa5693eb1c6d2221c28e9e99c6e#diff-9e4fe0cfd28004625a8006be8a0bdeab8cbdfb039449fb9501b15e8952577aaaL479
And then when it tries to contact the older cassandra version, the server
complains that it received a request using the v5 protocol without this beta
flag being set.
However, I was expecting that cqlsh would catch the error and down-negotiate to
v4. Instead, it simply returns the error with no message about how to solve. As
someone relatively new to `cqlsh`, I assumed at first there was no workaround
except for downgrading my version of `cqlsh`. After some googling, I stumbled
across a stackoverflow pointing toward the `--cqlversion` flag.
Given that this was the first cqlsh to support python 3, it means that anyone
trying to use python 3 for cqlsh against cassandra 3.x will hit this weird
error. There is no alternative if you want to use python 3.
My suggested fix is to catch the error and either prompt the user with
something like _Perhaps you want to manually specify a different cql protocol
version using the `--cqlversion` flag?_ or simply auto-down negotiate to
version 4 (although I understand why auto-down-negotiating may not be the right
move).
was:
I just ran `cqlsh` from `trunk` commit 2aa22ba99dcc1dacb07b7af31b2664e7db839063
against a Cassandra 3.11.10 docker image.
I expected that the newer cqlsh would down-negotiate from the v5 protocol to
the older v4 protocol.
Instead, I was surprised to get a server error about a beta protocol being used
without `BETA_FLAG` being set. I unfortunately had to reboot my computer, so I
lost the traceback but I can easily reproduce if needed.
I think what's happening is that this commit promoted v5 out of beta:
https://github.com/apache/cassandra/commit/c9d6c725dd0b4aa5693eb1c6d2221c28e9e99c6e#diff-9e4fe0cfd28004625a8006be8a0bdeab8cbdfb039449fb9501b15e8952577aaaL479
And then when it tries to contact the older cassandra version, it complains
that the v5 protocol is now being used without this beta flag being set.
However, I was expecting that cqlsh would catch the error and down-negotiate to
v4. Instead, it simply returns the error. Among other things, this prevents
cqlsh from being used against mixed-version clusters during a cluster upgrade.
Also given that this was the first cqlsh to support python 3, it means that
anyone trying to use python 3 for cqlsh against cassandra 3.x will hit a weird
error that they'll have to google for to find the random answer on
stackoverflow that points them toward the `--cqlversion` flag. There is no
alternative if you want to use python 3.
> Running cqlsh against cassandra 3 throws error about beta flag not set
> ----------------------------------------------------------------------
>
> Key: CASSANDRA-16508
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16508
> Project: Cassandra
> Issue Type: Bug
> Reporter: Jeff Widman
> Priority: Normal
>
> I just ran `cqlsh` from `trunk` commit
> 2aa22ba99dcc1dacb07b7af31b2664e7db839063 against a Cassandra 3.11.10 docker
> image.
> I expected that the newer cqlsh would down-negotiate from the v5 protocol to
> the older v4 protocol.
> Instead, I was surprised to get a server error about a beta protocol being
> used without `BETA_FLAG` being set. I unfortunately had to reboot my
> computer, so I lost the traceback but I can easily reproduce if needed.
> I think what's happening is that this commit promoted v5 out of beta:
> https://github.com/apache/cassandra/commit/c9d6c725dd0b4aa5693eb1c6d2221c28e9e99c6e#diff-9e4fe0cfd28004625a8006be8a0bdeab8cbdfb039449fb9501b15e8952577aaaL479
> And then when it tries to contact the older cassandra version, the server
> complains that it received a request using the v5 protocol without this beta
> flag being set.
> However, I was expecting that cqlsh would catch the error and down-negotiate
> to v4. Instead, it simply returns the error with no message about how to
> solve. As someone relatively new to `cqlsh`, I assumed at first there was no
> workaround except for downgrading my version of `cqlsh`. After some googling,
> I stumbled across a stackoverflow pointing toward the `--cqlversion` flag.
> Given that this was the first cqlsh to support python 3, it means that anyone
> trying to use python 3 for cqlsh against cassandra 3.x will hit this weird
> error. There is no alternative if you want to use python 3.
> My suggested fix is to catch the error and either prompt the user with
> something like _Perhaps you want to manually specify a different cql protocol
> version using the `--cqlversion` flag?_ or simply auto-down negotiate to
> version 4 (although I understand why auto-down-negotiating may not be the
> right move).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]