nizhikov commented on a change in pull request #8867:
URL: https://github.com/apache/ignite/pull/8867#discussion_r596353981
##########
File path:
modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
##########
@@ -150,9 +150,16 @@
/** Time array. */
public static final byte TIME_ARR = 37;
- /** Binary enum */
+ /** Binary enum. */
public static final byte BINARY_ENUM = 38;
+ /**
+ * Binary wrapper for {@code Object[]}.
+ * This wrapper used to store array component type id during serde process.
+ * @see BinaryUtils#doReadObjectArrayWrapper(BinaryInputStream,
BinaryContext, ClassLoader, BinaryReaderHandlesHolder, boolean, boolean)
+ */
+ public static final byte OBJ_ARR_WRAPPER = 39;
Review comment:
Yes. It passed through the async compute call in `GridServiceProxy`.
So ser-deser happens in a different thread. If we don't use dedicated typeid
we lose array information.
```
// Execute service remotely.
return ctx.closure().callAsyncNoFailover(
GridClosureCallMode.BROADCAST,
new ServiceProxyCallable(methodName(mtd), name,
mtd.getParameterTypes(), args, BinaryUtils.USE_ARRAY_WRAPPER.get()),
Collections.singleton(node),
false,
waitTimeout,
true).get();
``
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]