[ 
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)

Reply via email to