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

Reply via email to