[ 
https://issues.apache.org/jira/browse/IGNITE-13401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17190186#comment-17190186
 ] 

Aleksey Plekhanov commented on IGNITE-13401:
--------------------------------------------

[~marcuslo], thanks for the report!

The root cause of the problem: first byte of your serialized configuration is 
103 (length of configuration % 256), it's wrongly treated by thin client 
marshaller as start of the new object, but actually it's just count of bytes to 
read. Marshaller tries to deserialize this object and fails.

Workaround: change something in your cache configuration to change it 
serialized length (for example change name of some field, change cache name, 
add some dummy field etc.)  

> Unsupported protocol version exception when getting cache configuration from 
> Java thin client
> ---------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-13401
>                 URL: https://issues.apache.org/jira/browse/IGNITE-13401
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>    Affects Versions: 2.8.1
>            Reporter: Marcus Lo
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>
> We encounter BinaryObjectException: Unsupported protocol version: 8 in one of 
> our tables in Ignite when querying cache configuration via Java thin client. 
> To reproduce:
>  # Setup Ignite with persistence disabled (single node)
>  # Create the follow table:
> {code:java}
> CREATE TABLE IF NOT EXISTS LEOD_CONTEXT_STATUS
> (
>     flashNode             VARCHAR   NOT NULL,
>     legalEntity           VARCHAR   NOT NULL,
>     account               VARCHAR   NOT NULL,
>     userId                VARCHAR   NOT NULL,
>     eqtgContext           VARCHAR   NOT NULL,
>     submissionDate        INT       NOT NULL,
>     action                VARCHAR   NOT NULL,
>     actionTime            TIME      NOT NULL,
>     runNumber             INT       NOT NULL,
>     segment               VARCHAR   NOT NULL,
>     geography             VARCHAR   NOT NULL,
>     priceVersion          VARCHAR   NOT NULL,
>     status                VARCHAR   NOT NULL,
>     errorCount            INT       NOT NULL,
>     comments              VARCHAR,
>     equityDeltaLowerBound DOUBLE,
>     equityDeltaUpperBound DOUBLE,
>     equityDeltaUtil       DOUBLE,
>     equityVegaLowerBound  DOUBLE,
>     equityVegaUpperBound  DOUBLE,
>     equityVegaUtil        DOUBLE,
>     lastUpdateTime        TIMESTAMP NOT NULL,
>     PRIMARY KEY (flashNode, legalEntity, account, submissionDate)
> )
> WITH "template=REPLICATED, cache_name=LeodContextStatusCache";{code}
>  # Run the following test (in Kotlin):
> {code:java}
> @Test
> fun `moo`() {
>     val config = ClientConfiguration()
>         .setAddresses("localhost:10800")
>     val ignite = Ignition.startClient(config)
>     ignite.cache<Any, Any>("LeodContextStatusCache")
>         .configuration
> }
> {code}
>  # It fails in the following exception:
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Unsupported protocol 
> version: 8
>  at 
> org.apache.ignite.internal.binary.BinaryUtils.checkProtocolVersion(BinaryUtils.java:796)
>  at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:221)
>  at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:186)
>  at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:165)
>  at 
> org.apache.ignite.internal.client.thin.ClientUtils.cacheConfiguration(ClientUtils.java:381)
>  at 
> org.apache.ignite.internal.client.thin.TcpClientCache.lambda$getConfiguration$2(TcpClientCache.java:160)
>  at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:247)
>  at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:171)
>  at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:180)
>  at 
> org.apache.ignite.internal.client.thin.TcpClientCache.getConfiguration(TcpClientCache.java:155)
> {code}
> I notice that if any one of the columns is removed, the issue disappears.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to