You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ilya Kasnacheev (JIRA)" <ji...@apache.org> on 2018/08/29 13:50:00 UTC

[jira] [Assigned] (IGNITE-8886) Simultaneous using of BinaryWriter и BinaryRawWriter leads to BinaryObjectException and OOM

     [ https://issues.apache.org/jira/browse/IGNITE-8886?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ilya Kasnacheev reassigned IGNITE-8886:
---------------------------------------

    Assignee: Ilya Kasnacheev

> Simultaneous using of BinaryWriter и BinaryRawWriter leads to BinaryObjectException and OOM
> -------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-8886
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8886
>             Project: Ignite
>          Issue Type: Bug
>          Components: binary
>    Affects Versions: 2.5
>            Reporter: Roman Guseinov
>            Assignee: Ilya Kasnacheev
>            Priority: Major
>              Labels: binary
>         Attachments: BinarylizableInvalidFlag.java, BinarylizableOOM.java
>
>
> When we use BinaryWriter and BinaryRawWriter simultaneously inside writeBinary method we can get the following exceptions in the process of deserializing objects:
> 1. class org.apache.ignite.binary.BinaryObjectException: Invalid flag value: 115
> {code:java}
> Exception in thread "main" javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: Failed to deserialize object [typeName=org.apache.ignite.reproducers.fd7550.BinarylizableInvalidFlag$TestBean]
>    at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1302)
>    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:1732)
>    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:910)
>    at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.get(GatewayProtectedCacheProxy.java:608)
>    at org.apache.ignite.reproducers.fd7550.BinarylizableInvalidFlag.main(BinarylizableInvalidFlag.java:33)
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to deserialize object [typeName=org.apache.ignite.reproducers.fd7550.BinarylizableInvalidFlag$TestBean]
>    at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7322)
>    at org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:259)
>    at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:171)
>    at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:140)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get0(GridCacheAdapter.java:4563)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4537)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:1350)
>    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:907)
>    ... 2 more
> Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object [typeName=org.apache.ignite.reproducers.fd7550.BinarylizableInvalidFlag$TestBean]
>    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:909)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>    at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:798)
>    at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143)
>    at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:177)
>    at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:67)
>    at org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125)
>    at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1764)
>    at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1752)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.setResult(GridPartitionedSingleGetFuture.java:679)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.localGet(GridPartitionedSingleGetFuture.java:461)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.mapKeyToNode(GridPartitionedSingleGetFuture.java:342)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.map(GridPartitionedSingleGetFuture.java:216)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.init(GridPartitionedSingleGetFuture.java:208)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync0(GridDhtAtomicCache.java:1390)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$1600(GridDhtAtomicCache.java:130)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$16.apply(GridDhtAtomicCache.java:469)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$16.apply(GridDhtAtomicCache.java:467)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.asyncOp(GridDhtAtomicCache.java:756)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync(GridDhtAtomicCache.java:467)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get0(GridCacheAdapter.java:4556)
>    ... 5 more
> Caused by: class org.apache.ignite.binary.BinaryObjectException: Invalid flag value: 115
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1969)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>    at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1778)
>    at org.apache.ignite.internal.binary.BinaryUtils.deserializeOrUnmarshal(BinaryUtils.java:2141)
>    at org.apache.ignite.internal.binary.BinaryUtils.doReadCollection(BinaryUtils.java:2072)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readCollection0(BinaryReaderExImpl.java:1535)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readCollection(BinaryReaderExImpl.java:1521)
>    at org.apache.ignite.reproducers.fd7550.BinarylizableInvalidFlag$TestBean.readBinary(BinarylizableInvalidFlag.java:54)
>    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:860)
>    ... 26 more
> {code}
> 2. java.lang.OutOfMemoryError: Java heap space
> {code:java}
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
>    at org.apache.ignite.internal.binary.BinaryUtils.doReadDecimalArray(BinaryUtils.java:1347)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1881)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>    at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1778)
>    at org.apache.ignite.internal.binary.BinaryUtils.deserializeOrUnmarshal(BinaryUtils.java:2141)
>    at org.apache.ignite.internal.binary.BinaryUtils.doReadCollection(BinaryUtils.java:2072)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readCollection0(BinaryReaderExImpl.java:1535)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readCollection(BinaryReaderExImpl.java:1521)
>    at org.apache.ignite.reproducers.fd7550.BinarylizableOOM$TestBean.readBinary(BinarylizableOOM.java:54)
>    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:860)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>    at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:798)
>    at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143)
>    at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:177)
>    at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:67)
>    at org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125)
>    at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1764)
>    at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1752)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.setResult(GridPartitionedSingleGetFuture.java:679)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.localGet(GridPartitionedSingleGetFuture.java:461)
> Disconnected from the target VM, address: '127.0.0.1:26915', transport: 'socket'
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.mapKeyToNode(GridPartitionedSingleGetFuture.java:342)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.map(GridPartitionedSingleGetFuture.java:216)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.init(GridPartitionedSingleGetFuture.java:208)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync0(GridDhtAtomicCache.java:1390)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$1600(GridDhtAtomicCache.java:130)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$16.apply(GridDhtAtomicCache.java:469)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$16.apply(GridDhtAtomicCache.java:467)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.asyncOp(GridDhtAtomicCache.java:756)
>    at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync(GridDhtAtomicCache.java:467)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get0(GridCacheAdapter.java:4556)
>    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4537)
> {code}
> Reproducers for each exception are attached.
> The workaround here - do not use BinaryWriter и BinaryRawWriter simultaneously.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)