什么是 ClientVersionNotSupportedError 以及如何解决它

What is ClientVersionNotSupportedError and how to resolve it

此 QA 来自 Slack 对话:https://uber-cadence.slack.com/archives/CL22WDF70/p1625155376151600

使用本地 CLI,版本 0.18.4; Cadence 服务器是 0.16.0 版。 CLI 适用于某些操作,例如 cadence wf describe/cancel fails:

$ cadence wf cancel -w 'FbrEngineController(clirId=76351141)'
Error: Cancel workflow failed.
Error Details: ClientVersionNotSupportedError{FeatureVersion: 1.7.0, ClientImpl: cli, SupportedVersions: <=1.6.0}
('export CADENCE_CLI_SHOW_STACKS=1' to see stack traces)

客户端版本检查是一项防止对旧服务器使用新 clients/CLI 的功能。 您将只在服务器上启用 EnableClientVersionCheck 动态配置。默认情况下它是禁用的。

但是如果您已经打算对旧服务器使用新的 clients/CLI,则不必使用此功能。不会出现严重错误,服务器只会 return 出错,因为某些请求无法支持。

例如0.16 server/CLI is here的所有信息, 它支持高达 0.16 的 CLI 版本。

如果你检查

https://github.com/uber/cadence/blob/v0.12.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.13.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.14.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.15.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.16.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.17.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.18.0/common/client/versionChecker.go
https://github.com/uber/cadence/blob/v0.19.0/common/client/versionChecker.go
and
https://github.com/uber/cadence/blob/v0.20.0/common/client/versionChecker.go

它们都支持 CLI 版本 0.16。

但是最新的 release (0.21) support up to 0.17 因为这个 CLI 版本是 0.21。

因此 0.20 的 CLI 可以对 0.12 ~ 0.20 的服务器工作

最早的 Cadence 自制软件是 0.18.2:https://github.com/Homebrew/homebrew-core/commits/master/Formula/cadence-workflow.rb

因此,如果您使用的是旧版本的 Cadence 服务器 (0.12-0.20) 并且想要 use Cadence CLI via homebrew,请将其降级到旧版本。