[
https://issues.apache.org/jira/browse/IGNITE-24356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Tupitsyn updated IGNITE-24356:
------------------------------------
Description:
* Handshake request and response contain:
* *feature flags*: bitset encoded as msgpack binary
* *extensions*: a map of string -> object, encoded as msgpack int (map size)
+ size * (string + obj) values
Java, .NET and C++ clients handle those things inconsistenty.
For example, Java client has:
{code}
var featuresLen = unpacker.unpackBinaryHeader();
unpacker.skipValues(featuresLen);
var extensionsLen = unpacker.unpackInt();
unpacker.skipValues(extensionsLen);
{code}
unpacker.skipValues(featuresLen) is wrong, because featuresLen is the size of
the binary payload in bytes.
As a result, the client will fail on handshake if any feature flags are present.
> Thin 3.0: Features and extensions handling is inconsistent
> ----------------------------------------------------------
>
> Key: IGNITE-24356
> URL: https://issues.apache.org/jira/browse/IGNITE-24356
> Project: Ignite
> Issue Type: Bug
> Components: platforms, thin client
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Blocker
> Labels: ignite-3
> Fix For: 3.0
>
>
> * Handshake request and response contain:
> * *feature flags*: bitset encoded as msgpack binary
> * *extensions*: a map of string -> object, encoded as msgpack int (map
> size) + size * (string + obj) values
> Java, .NET and C++ clients handle those things inconsistenty.
> For example, Java client has:
> {code}
> var featuresLen = unpacker.unpackBinaryHeader();
> unpacker.skipValues(featuresLen);
> var extensionsLen = unpacker.unpackInt();
> unpacker.skipValues(extensionsLen);
> {code}
> unpacker.skipValues(featuresLen) is wrong, because featuresLen is the size of
> the binary payload in bytes.
> As a result, the client will fail on handshake if any feature flags are
> present.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)