[
https://issues.apache.org/jira/browse/GEODE-8403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinmei Liao resolved GEODE-8403.
--------------------------------
Resolution: Duplicate
> gfsh connect uses marketing version instead of serialization version in
> compatibility check
> -------------------------------------------------------------------------------------------
>
> Key: GEODE-8403
> URL: https://issues.apache.org/jira/browse/GEODE-8403
> Project: Geode
> Issue Type: Bug
> Components: gfsh
> Affects Versions: 1.12.1, 1.13.0, 1.14.0
> Reporter: Bill Burcham
> Priority: Major
> Labels: GeodeOperationAPI
>
> After GEODE-8331 {{ConnectCommand.connect()}} uses the result from
> {{OperationInvoker.getRemoteVersion()}}, the "marketing" version string
> derived from {{GemFireVersion.getGemFireVersion()}}, to determine
> compatibility (with the remote Geode system.)
> This is wrong because the purpose of that marketing version string is to
> carry version info for products derived from Geode. Those product versions do
> not, in general, correspond to Geode product versions.
> {{GemFireVersion.getGemFireVersion()}} might return values like:
> * {{Apache Geode 1.10}}
> * {{Pivotal GemFire 9.5}}
> * {{Ampool Active Data Store 1.0}}
> For compatibility purposes between Geode components, serialization version
> {{Version.CURRENT}} (soon to be {{KnownVersion.CURRENT}}) should be used.
> The marketing version is set during a build via Gradle
> {{-Pversion=<real-version> -PgeodeVersion=<real-version>}}. Unfortunately, PR
> pipeline builds do not have those properties set. As a result, such a build
> will run with marketing version "0.0.0".
> Since {{ConnectCommand.connect()}} fails (with an error message: {{Cannot use
> a 0.0.0 gfsh client to connect to a 0.0.0 cluster}} for any remote
> (marketing) version below 1.10 (9.9) gfsh connect won't work on these PR
> pipeline builds, when connecting to a locator running the same build.
> It would be nice if we could fix this by having {{ConnectCommand.connect()}}
> probe the remote version via
> {{OperationInvoker.getRemoteGeodeSerializationVersion()}} instead of
> {{OperationInvoker.getRemoteVersion()}}. But unfortunately,
> {{getRemoteGeodeSerializationVersion()}} was introduced in 1.12 (in
> GEODE-5194)—it's not present in [1.10,1.12). So the solution isn't so simple.
> When this story is complete {{ConnectCommand.connect()}} will use this
> algorithm to determine compatibility with the remote system:
> 1. try {{getRemoteGeodeSerializationVersion()}} and if it succeeds use that
> for the version comparison
> 2. if that doesn't work, fall back to {{OperationInvoker.getRemoteVersion()}}
> This will allow a gfsh built via the PR pipeline to connect to Geode locators
> built in the same build. For testing with older Geode versions we can rely on
> those old versions to have been built with {{-Pversion=<real-version>
> -PgeodeVersion=<real-version>}} or to be 1.12-or-newer (and so, to support
> {{getRemoteGeodeSerializationVersion()}})
--
This message was sent by Atlassian Jira
(v8.3.4#803005)