You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Kornev (JIRA)" <ji...@apache.org> on 2016/03/25 17:03:25 UTC
[jira] [Commented] (IGNITE-2894) Binary object inside of
Externalizable still serialized with OptimizedMarshaller
[ https://issues.apache.org/jira/browse/IGNITE-2894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15211981#comment-15211981 ]
Andrey Kornev commented on IGNITE-2894:
---------------------------------------
Just for completeness, here's a copy of my posting from the dev list related to this subject.
{quote}
Ignite Serialization should follow the approach similar to what Java serialization does: it can transparently and consistently handle both Serializable and Externalizable classes. It can do it because it relies on a single class - ObjectOutputStream - to do serialization (and a single class - ObjectInputStream - to do the opposite, but let's ignore it for the moment). ObjectOutputStream delegates to proper user callbacks (writeObject or writeExternal) at the right moments, but otherwise it fully controls the on-the-wire representation and takes care of all the necessary stream framing/marking so that ObjectInputStream can then correctly deserialize the bytes. It's never a problem for Java to serialize an Externalizable field from a Serializable object and vice versa. Users can mix and match serialization APIs as they please.
Ignite should just have a single marshaller, let's say the Binary, which drives the whole serialization process. It doesn't delegate to OptimizedMarshaller as it does today. Instead it detects the Serializable/Externalizable classes and calls their serialization callbacks - writeObject/writeExternal - passing in *itself* as ObjectOutputStream/ObjectOutput correspondingly. This way the entire serialization process never leaves the context of a single Binary marshaller and allows Ignite to handle any combination of serialization types (Binary, Externalizable, Serializable) seamlessly.
{quote}
> Binary object inside of Externalizable still serialized with OptimizedMarshaller
> --------------------------------------------------------------------------------
>
> Key: IGNITE-2894
> URL: https://issues.apache.org/jira/browse/IGNITE-2894
> Project: Ignite
> Issue Type: Bug
> Components: general
> Affects Versions: 1.5.0.final
> Reporter: Valentin Kulichenko
> Priority: Critical
> Labels: community, customer, important
> Fix For: 1.6
>
>
> When binary marshaller meets an Externalizable object, it switches to optimized marshaller. And if there is a regular object inside, it's still serialized with optimized, even if its type is declared in binary configuration with custom mapper, etc.
> Essentially, binary marshaller should fully support Java serialization, including {{Externalizable}} and {{writeObject}}/{{readObject}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)