[ https://issues.apache.org/jira/browse/IGNITE-6234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16193818#comment-16193818 ]
ASF GitHub Bot commented on IGNITE-6234: ---------------------------------------- GitHub user kristoffSC opened a pull request: https://github.com/apache/ignite/pull/2811 IGNITE-6234 Initialize schemaIds as empty set if schemas field is null Initialize schemaIds as an empty set if schemas field is null and BinaryMetada is deserialized. This behavior is concise with BinaryMetadata constructor. This should prevent NPE for some situations when BinarryMetadata object is created from deserialization and we call hasSchema(int i) on it. - https://issues.apache.org/jira/browse/IGNITE-6234 You can merge this pull request into a Git repository by running: $ git pull https://github.com/kristoffSC/ignite IGNITE-6234 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/2811.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2811 ---- commit b515c499031691bd76800a7db26478f41b2218e8 Author: Krzysztof Chmielewski <krzysiek.chmielew...@gmail.com> Date: 2017-10-05T21:59:45Z IGNITE-6234 Initialize schemaIds to empty set if schemas field is null during the deserialization ---- > [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)