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