You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Nikolay Izhikov (Jira)" <ji...@apache.org> on 2020/04/17 07:49:00 UTC
[jira] [Updated] (IGNITE-12569) Can't set serialized enum to a
BinaryObject's field
[ https://issues.apache.org/jira/browse/IGNITE-12569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nikolay Izhikov updated IGNITE-12569:
-------------------------------------
Fix Version/s: 2.8.1
> Can't set serialized enum to a BinaryObject's field
> ---------------------------------------------------
>
> Key: IGNITE-12569
> URL: https://issues.apache.org/jira/browse/IGNITE-12569
> Project: Ignite
> Issue Type: Bug
> Components: binary
> Reporter: Konstantin Orlov
> Assignee: Konstantin Orlov
> Priority: Major
> Fix For: 2.9, 2.8.1
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> The deserialization of the BinaryObject fails since a serialized representation of the enum was set to a field instead of the enum itself. Because of this issue there is no way to work with enums without a corresponding class.
> Error message thrown during the deserialization:
> {noformat}[18:03:06,159][ERROR][main][BinaryContext] Failed to deserialize object [typeName=binary.BinaryEnumExample$TestClass]
> org.apache.ignite.binary.BinaryObjectException: Failed to read field [name=theEnum]
> at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:191) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:887) [classes/:?]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1762) [classes/:?]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) [classes/:?]
> at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:794) [classes/:?]
> at org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:636) [classes/:?]
> at binary.BinaryEnumExample.main(BinaryEnumExample.java:20) [classes/:?]
> Caused by: org.apache.ignite.binary.BinaryObjectException: Unexpected field type [pos=24, expected=Enum, actual=Enum]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.checkFlagNoHandles(BinaryReaderExImpl.java:1677) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.readEnum0(BinaryReaderExImpl.java:1403) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.readEnum(BinaryReaderExImpl.java:1387) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:885) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:702) ~[classes/:?]
> at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:187) ~[classes/:?]
> ... 6 more
> Exception in thread "main" class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object [typeName=binary.BinaryEnumExample$TestClass]
> at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:926)
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1762)
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714)
> at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:794)
> at org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:636)
> at binary.BinaryEnumExample.main(BinaryEnumExample.java:20)
> Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to read field [name=theEnum]
> at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:191)
> at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:887)
> ... 5 more
> Caused by: class org.apache.ignite.binary.BinaryObjectException: Unexpected field type [pos=24, expected=Enum, actual=Enum]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.checkFlagNoHandles(BinaryReaderExImpl.java:1677)
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.readEnum0(BinaryReaderExImpl.java:1403)
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.readEnum(BinaryReaderExImpl.java:1387)
> at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:885)
> at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:702)
> at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:187)
> ... 6 more{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)