[ https://issues.apache.org/jira/browse/IGNITE-6234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16193826#comment-16193826 ]
Krzysztof Chmielewski edited comment on IGNITE-6234 at 10/5/17 10:16 PM: ------------------------------------------------------------------------- Hi Team, my previous post got me thinking and I believe I've found the root cause of this issue. Problem is during the deserialization and it is in *readFrom(Datainput in)* method. Please see my pull request for a details. https://github.com/apache/ignite/pull/2811 Comparing *readFrom(Datainput in)* method to BinaryMetadata constructor I've noticed that *schemaId* field is not initialized as an empty Set if *schemas* field is *null* as it is in line 118 for example. So *readFrom(Datainput in)* is missing this part. was (Author: kristoffsc): Hi Team, my previous post got me thinking and I believe I've found the root cause of this issue. Problem is during deserialization and it is in *readFrom(Datainput in)* method. Please see my pull request for a details. https://github.com/apache/ignite/pull/2811 Comparing *readFrom(Datainput in)* method to BinaryMetadata constructor I've noticed that *schemaId* field is not initialized as an empty Set if *schemas* field is *null* as it is in line 118 for example. So *readFrom(Datainput in)* is missing this part. > [Test failure] > GridCacheClientModesTcpClientDiscoveryAbstractTest$CaseNearReplicatedTransactional.testGetFromClientNode > ----------------------------------------------------------------------------------------------------------------------- > > Key: IGNITE-6234 > URL: https://issues.apache.org/jira/browse/IGNITE-6234 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.1 > Reporter: Sergey Chugunov > Assignee: Sergey Chugunov > Labels: MakeTeamcityGreenAgain > > Test reproducible locally although with a very low probability. > I wasn't able to reproduce it starting test in isolation but managed to do it > starting *GridCacheClientModesTcpClientDiscoveryAbstractTest* 50 times in a > row observing from 1 to 3 failures. > Test run with failed test is available > [here|https://ci.ignite.apache.org/viewLog.html?buildId=798538&tab=buildResultsDiv&buildTypeId=Ignite20Tests_IgniteCache]. > It seems that when client requests value of custom class from near cache it > may see BinaryMetadata for this class with no schema. > Test fails with the following exception: > {noformat} > java.lang.NullPointerException: null > at > org.apache.ignite.internal.binary.BinaryMetadata.hasSchema(BinaryMetadata.java:189) > at > org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.metadata(CacheObjectBinaryProcessorImpl.java:517) > at > org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.metadata(CacheObjectBinaryProcessorImpl.java:185) > at > org.apache.ignite.internal.binary.BinaryContext.metadata(BinaryContext.java:1237) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.getOrCreateSchema(BinaryReaderExImpl.java:2005) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:284) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:183) > at > org.apache.ignite.internal.binary.BinaryObjectImpl.reader(BinaryObjectImpl.java:830) > at > org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:794) > at > org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) > at > org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:161) > at > org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:41) > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125) > at > org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1734) > at > org.apache.ignite.internal.processors.cache.GridCacheContext.addResult(GridCacheContext.java:1889) > at > org.apache.ignite.internal.processors.cache.GridCacheContext.addResult(GridCacheContext.java:1828) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetFuture.loadEntries(GridNearGetFuture.java:752) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetFuture.access$000(GridNearGetFuture.java:68) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetFuture$MiniFuture.onResult(GridNearGetFuture.java:1012) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetFuture.onResult(GridNearGetFuture.java:215) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter.processGetResponse(GridNearCacheAdapter.java:294) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTransactionalCache$1.apply(GridNearTransactionalCache.java:92) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTransactionalCache$1.apply(GridNearTransactionalCache.java:90) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1060) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:99) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:293) > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1556) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1184) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:126) > at > org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1097) > at > org.apache.ignite.internal.util.StripedExecutor$Stripe.run(StripedExecutor.java:485) > at java.lang.Thread.run(Thread.java:745) > {noformat} > Quick fix: add null check for schemaIds. -- This message was sent by Atlassian JIRA (v6.4.14#64029)