[
https://issues.apache.org/jira/browse/IGNITE-28239?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18066092#comment-18066092
]
Pavel Tupitsyn edited comment on IGNITE-28239 at 3/16/26 4:31 PM:
------------------------------------------------------------------
* Implicit tx
* Batch of 1000 keys
* "3a" is "positive fixint with value 58" in msgpack, which looks like the
tuple count
Suspects:
* Use-after-free (Netty buffers)
* Protocol breakdown due to fragile logic in *DirectTxUtils* (*tryUnpackNil*
looks suspicious and might leave some unread bytes)
* *getAll* splitting logic with tx
* TODO: getAll starts multiple different transactions? See
*DirectTxUtils.writeTx* which does TX_ID_FIRST_DIRECT multiple times
was (Author: ptupitsyn):
* Implicit tx
* Batch of 1000 keys
* "3a" is "positive fixint with value 58" in msgpack, which looks like the
tuple count
Suspects:
* Use-after-free (Netty buffers)
* Protocol breakdown due to fragile logic in *DirectTxUtils* (*tryUnpackNil*
looks suspicious and might leave some unread bytes)
* TODO: getAll starts multiple different transactions? See
*DirectTxUtils.writeTx* which does TX_ID_FIRST_DIRECT multiple times
> Java client: Failed to deserialize server response. Expected boolean, but got
> Integer
> -------------------------------------------------------------------------------------
>
> Key: IGNITE-28239
> URL: https://issues.apache.org/jira/browse/IGNITE-28239
> Project: Ignite
> Issue Type: Bug
> Components: thin clients ai3, transactions ai3
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Critical
> Labels: ignite-3
> Fix For: 3.2
>
> Attachments: 2026-03-05-12-25-36_172.25.4.49_kv_run.txt
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Under load in benchmark run:
> {code}
> org.msgpack.core.MessageTypeException: Expected boolean, but got Integer (3a)
> at
> org.apache.ignite.internal.client.proto.ClientMessageUnpacker.unexpected(ClientMessageUnpacker.java:94)
> at
> org.apache.ignite.internal.client.proto.ClientMessageUnpacker.unpackBoolean(ClientMessageUnpacker.java:227)
> at
> org.apache.ignite.internal.client.table.ClientTupleSerializer.readKvTuplesNullable(ClientTupleSerializer.java:389)
> at
> org.apache.ignite.internal.client.table.ClientKeyValueBinaryView.lambda$getAllAsync$3(ClientKeyValueBinaryView.java:123)
> at
> org.apache.ignite.internal.client.table.ClientTable.readSchemaAndReadData(ClientTable.java:620)
> at
> org.apache.ignite.internal.client.table.ClientTable.lambda$doSchemaOutInOpAsync$7(ClientTable.java:500)
> at
> org.apache.ignite.internal.client.TcpClientChannel.complete(TcpClientChannel.java:527)
> at
> org.apache.ignite.internal.client.TcpClientChannel.lambda$completeAsync$6(TcpClientChannel.java:500)
> at
> java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
> at
> java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
> at
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
> at
> java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
> at
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
> at
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)