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)

Reply via email to