Nikita Amelchev created IGNITE-29110:
----------------------------------------
Summary: Restore predefined binary types missing on nodes without
a platform processor and in the thin client
Key: IGNITE-29110
URL: https://issues.apache.org/jira/browse/IGNITE-29110
Project: Ignite
Issue Type: Bug
Reporter: Nikita Amelchev
Attachments: reproducer.patch
IGNITE-26061 (2.18.0) moved the registration of several predefined binary types
from the BinaryContext constructor into processors, so a BinaryContext created
outside of them no longer knows these types.
AffinityKey is registered only in CacheObjectBinaryProcessorImpl, so the
BinaryContext created by the Java thin client does not have it. The class is
listed as a system type, so the client marshals AffinityKey with the optimized
marshaller instead of writing a binary object: partition awareness for such
keys does not work even with an explicit CacheKeyConfiguration, the server has
to deserialize and re-marshal every key, and IgniteClient.binary().toBinary()
returns the object itself.
PlatformDotNetSessionData, PlatformDotNetSessionLockResult and
PlatformJavaObjectFactoryProxy are registered only in PlatformProcessorImpl, so
a Java node started without PlatformConfiguration does not have them. A session
value written by a .NET node cannot be read on such a node: cache.get and the
server-side session entry processors fail with BinaryInvalidTypeException
"Failed to resolve class name", which breaks ASP.NET session state in clusters
of Java servers and .NET clients.
The thin client module cannot reference these classes directly, so the
registration needs a mechanism shared by nodes and clients.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)