You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Dmitry Karachentsev (JIRA)" <ji...@apache.org> on 2016/03/04 15:46:40 UTC
[jira] [Assigned] (IGNITE-2753) Binary object might be deserialized
unexpectedly when cache store is enabled.
[ https://issues.apache.org/jira/browse/IGNITE-2753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dmitry Karachentsev reassigned IGNITE-2753:
-------------------------------------------
Assignee: Vladimir Ozerov (was: Dmitry Karachentsev)
> Binary object might be deserialized unexpectedly when cache store is enabled.
> -----------------------------------------------------------------------------
>
> Key: IGNITE-2753
> URL: https://issues.apache.org/jira/browse/IGNITE-2753
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 1.5.0.final
> Reporter: Vladimir Ozerov
> Assignee: Vladimir Ozerov
> Priority: Blocker
> Labels: community, customer, important
> Fix For: 1.6
>
>
> *Problem*
> See {{GridCacheMapEntry}} class. There are lots of calls to store like this:
> {code}
> cctx.store().put(null, keyValue(false), CU.value(val, cctx, false), ver);
> {code}
> When {{keyValue()}} is called, it might force object deserialization. And if there is no class on the server, the following exception might appear:
> {code}
> g.apache.ignite.binary.BinaryInvalidTypeException: XXX
> at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:558) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1442) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:542) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:117) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.keyValue(GridCacheMapEntry.java:1261) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.initialValue(GridCacheMapEntry.java:3326) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl$IsolatedUpdater.receive(DataStreamerImpl.java:1598) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.datastreamer.DataStreamerUpdateJob.call(DataStreamerUpdateJob.java:140) ~[ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor.processRequest(DataStreamProcessor.java:304) [ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor.access$000(DataStreamProcessor.java:49) [ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor$1.onMessage(DataStreamProcessor.java:79) [ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:822) [ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.managers.communication.GridIoManager.access$1600(GridIoManager.java:103) [ignite-core-1.5.7.jar:1.5.7]
> at org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:785) [ignite-core-1.5.7.jar:1.5.7]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_51]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_51]
> {code}
> *Proposed solution*
> Pass key and value directly to store manager. It should already handle everything correctly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)