Re: Deserialization error with Ignite 2.3.0

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Deserialization error with Ignite 2.3.0

Valentin Kulichenko
*cross-posting to dev*

Hi Chris,

This is a regression due to this fix:
https://issues.apache.org/jira/browse/IGNITE-6485. For some reason, since
2.3 it is looking for readResolve/writeReplace methods only in exact class
that is being serialized, but not in the whole hierarchy.

*Andrey G*, since you did this change, can you please clarify it? Why isn't
it looking into parent classes anymore? Generally, readResolve/writeReplace
can reside in parent classes, so previous behavior seems to be the correct
one. Can you create a ticket to fix it back?

-Val

On Mon, Nov 6, 2017 at 7:59 PM, Chris Berry <[hidden email]> wrote:

> Hi Val
>
> I have found that if I switch from
>
>     igniteConfig.setMarshaller(new BinaryMarshaller());
>
> To:
>
>     igniteConfig.setMarshaller(new
> OptimizedMarshaller().setRequireSerializable(false));
>
> Then everything works again.
>
> Although I am worried that this will have a terrible effect on performance
> (I switched to the BinaryMarshaller to get a good performance bump at the
> release of 2.0.0)
>
> I believe that all of this is because the concrete forms of the
> ImmutableList (e.g. RegularImmutableList)
> all use:
>
>   final transient Object[] array;
>
> to keep their data.
> And that the handling of transients changed for the BinaryMarshaller in
> 2.3.0
>
> Thanks for your help!!
> Cheers,
> -- Chris
>
>
>
>
> Thanks,
> -- Chris
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: Deserialization error with Ignite 2.3.0

Valentin Kulichenko
Andrey,

This ticket seems to be about the same issue:
https://issues.apache.org/jira/browse/IGNITE-6944

Can you please take a look and provide your thoughts?

-Val

On Tue, Nov 7, 2017 at 4:02 PM, Valentin Kulichenko <
[hidden email]> wrote:

> *cross-posting to dev*
>
> Hi Chris,
>
> This is a regression due to this fix: https://issues.apache.
> org/jira/browse/IGNITE-6485. For some reason, since 2.3 it is looking for
> readResolve/writeReplace methods only in exact class that is being
> serialized, but not in the whole hierarchy.
>
> *Andrey G*, since you did this change, can you please clarify it? Why
> isn't it looking into parent classes anymore? Generally,
> readResolve/writeReplace can reside in parent classes, so previous behavior
> seems to be the correct one. Can you create a ticket to fix it back?
>
> -Val
>
> On Mon, Nov 6, 2017 at 7:59 PM, Chris Berry <[hidden email]> wrote:
>
>> Hi Val
>>
>> I have found that if I switch from
>>
>>     igniteConfig.setMarshaller(new BinaryMarshaller());
>>
>> To:
>>
>>     igniteConfig.setMarshaller(new
>> OptimizedMarshaller().setRequireSerializable(false));
>>
>> Then everything works again.
>>
>> Although I am worried that this will have a terrible effect on performance
>> (I switched to the BinaryMarshaller to get a good performance bump at the
>> release of 2.0.0)
>>
>> I believe that all of this is because the concrete forms of the
>> ImmutableList (e.g. RegularImmutableList)
>> all use:
>>
>>   final transient Object[] array;
>>
>> to keep their data.
>> And that the handling of transients changed for the BinaryMarshaller in
>> 2.3.0
>>
>> Thanks for your help!!
>> Cheers,
>> -- Chris
>>
>>
>>
>>
>> Thanks,
>> -- Chris
>>
>>
>>
>>
>> --
>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>
>
>