[ https://issues.apache.org/jira/browse/IGNITE-4380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16720168#comment-16720168 ]
Amelchev Nikita commented on IGNITE-4380: ----------------------------------------- [~agoncharuk] Hi. The failure scenario is that cached value can be read on starting remote tx in case of entry hasn't value and read through configured (when dht prepare message processed). It's fixed by setting the write flag to txEntry. It'll lead to including its to dht prepare message. When txHandler will process message it will not read the cached value on starting remote tx. For a local cache, the prepare step does not wait for the key's prepare futures to complete. Multiple threads can process a single value and write it. It's solved by waiting for prepare future during the prepare step. > Cache invoke calls can be lost > ------------------------------ > > Key: IGNITE-4380 > URL: https://issues.apache.org/jira/browse/IGNITE-4380 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.0 > Reporter: Semen Boikov > Assignee: Amelchev Nikita > Priority: Critical > Labels: MakeTeamcityGreenAgain > Fix For: 2.8 > > > * Recently added test > GridCacheAbstractFullApiSelfTest.testInvokeAllMultithreaded fails on TC in > various configurations with transactional cache. > Example of failure > GridCacheReplicatedOffHeapTieredMultiNodeFullApiSelfTest.testInvokeAllMultithreaded: > {noformat} > junit.framework.AssertionFailedError: expected:<20000> but was:<10868> > at junit.framework.Assert.fail(Assert.java:57) > at junit.framework.Assert.failNotEquals(Assert.java:329) > at junit.framework.Assert.assertEquals(Assert.java:78) > at junit.framework.Assert.assertEquals(Assert.java:234) > at junit.framework.Assert.assertEquals(Assert.java:241) > at junit.framework.TestCase.assertEquals(TestCase.java:409) > at > org.apache.ignite.internal.processors.cache.GridCacheAbstractFullApiSelfTest.testInvokeAllMultithreaded(GridCacheAbstractFullApiSelfTest.java:342) > at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at junit.framework.TestCase.runTest(TestCase.java:176) > at > org.apache.ignite.testframework.junits.GridAbstractTest.runTestInternal(GridAbstractTest.java:1803) > at > org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:118) > at > org.apache.ignite.testframework.junits.GridAbstractTest$4.run(GridAbstractTest.java:1718) > at java.lang.Thread.run(Thread.java:745) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)