[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16419072#comment-16419072 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~agoncharuk] Hi! I've fixed tests, here actual [TC run|https://ci.ignite.apache.org/viewLog.html?buildId=1162921&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_RunAll] There are some failed tests there, so i rerun them separately: CachePartitionStateTest#testPartitionState2_2_NoCacheOnCoordinator -> [succesfull after rerun|https://ci.ignite.apache.org/viewLog.html?buildId=1166077&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_Cache6] TcpDiscoverySslSelfTest.testNodeShutdownOnRingMessageWorkerStartNotFinished -> [succesfull after rerun|https://ci.ignite.apache.org/viewLog.html?buildId=1166078&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_IgniteSpi] ClientTcpSslMultiThreadedSelfTest.testMultithreadedTaskRun -> [succesfull after rerun|https://ci.ignite.apache.org/viewLog.html?buildId=1166079&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_IgniteJavaClient] IgniteClientReconnectFailoverTest.testReconnectStreamerApi -> [succesfull after rerun|https://ci.ignite.apache.org/viewLog.html?buildId=1166080&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_IgniteClientNodes] Other tests are flacky, even 'Ignite PDS Indexing' So, please, review the ticket > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16383752#comment-16383752 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~agoncharuk] Hi! I've fixed test, checked failed tests in TC run and now its ok, plz review it : [new TC run|https://ci.ignite.apache.org/viewQueued.html?itemId=1118525&tab=queuedBuildOverviewTab] > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16380284#comment-16380284 ] Alexey Goncharuk commented on IGNITE-6083: -- [~Alexey Kuznetsov] Please note that IgnitePutAllLargeBatchSelfTest (Ignite Cache 4 suite) and AtomicLongTest.TestMultithreaded (two .net suites) are consistently failing in your PR. Please take a look. > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16379993#comment-16379993 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~agoncharuk] Hi! I added multi-threaded test you described above. Also new tests for pessimitic mode were added, and they revealed bug in pessimitic scenarios. The bug is fixed, and you can review the whole ticket once more. To sum up, the following tests I included in PR : testTxInvokeSequentialOptimisticConflict - Tests that optimistic conflict occures when value is changed outside the serizlizable transaction. testTxInvokeSequentialCallOnNearNode - Tests that sequential invoke call works correct. In this test the value is fetched from remote node. In pessimitic mode, the bug occured in this test. testTxInvokeSequentialCallOnPrimaryNode - Tests that sequential invoke call works correct. In this test the value is located on local node, original test. Also, run tests on teamcity. You can review it : [TC run|https://ci.ignite.apache.org/viewLog.html?buildId=1113310&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_RunAll] [Upsource review|https://reviews.ignite.apache.org/ignite/review/IGNT-CR-395?filePath=/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java] [PR|https://github.com/apache/ignite/pull/2975] > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16379974#comment-16379974 ] ASF GitHub Bot commented on IGNITE-6083: Github user voipp closed the pull request at: https://github.com/apache/ignite/pull/3546 > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16378680#comment-16378680 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~agoncharuk] Hi! In current master branch I came across odd behavior, consider the following scenario: T1: Start optimistic READ_COMMITTED tx, run cache.invoke(); // This cache invoke fetches the key from primary node and stores into tx entry. This Invoke doesn't change the value. T2: run cache.put();// which overwrites the original value; T1: run cache.read();// Here and futher old value will be returned, because of invoke() called above. commit(); In this scenario we have no Non-Repeatable Reads, which seems incorrect for READ_COMMITTED isolation mode. Do you agree ? If yes, I will file another new ticket, fixing it. > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16376498#comment-16376498 ] Alexey Goncharuk commented on IGNITE-6083: -- [~Alexey Kuznetsov], I like the second version of the test better. Note however, that we must make sure that the EntryProcessor will never change the entry value to a value based on some outdated cached entry. Consider the following scenario: T1: Start tx, run cache.invoke(), the value is stored in TxEntry T2: run cache.put(), which overwrites the original value T1: run cache.invoke(), it received an old cached value commit() Can you please add a multi-threaded test verifying that in such a scenario the second thread will get a proper optimistic conflict exception? Also, please attach a link to a TC run. Thanks! > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16370202#comment-16370202 ] ASF GitHub Bot commented on IGNITE-6083: GitHub user voipp opened a pull request: https://github.com/apache/ignite/pull/3546 IGNITE-6083 alternate fix version You can merge this pull request into a Git repository by running: $ git pull https://github.com/voipp/ignite ignite-6083-2 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/3546.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 #3546 commit 236b63bb7f3ebd214a690b168edf14c6c1832c95 Author: voipp Date: 2018-02-20T16:09:12Z IGNITE-6083 alternate fix version > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16370147#comment-16370147 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~agoncharuk] when first entry processor is called in tx#enlistWriteEntry(), cache entry is pulled from cache by entry.innerGet(). So first entry processor observes non-null value [see source|https://github.com/voipp/ignite/blob/49cd833eed456917b4435fc12ffcce6a689d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java#L1319]. This value _*would not be saved*_ in IgniteTxEntry. When entry processor is called a second time, it gets value from IgniteTxEntry#value , which is null, because we didn't set any value at first call. PS. It seems odd, that entry processor is called multiple times : before transaction commit and during prepare phase(after locks are aquired). And the value is set on finish phase in innerSet. I think, we can call only once : before commit, and save the value in Tx entry. > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16369855#comment-16369855 ] Alexey Goncharuk commented on IGNITE-6083: -- [~Alexey Kuznetsov] I am not sure the fix is correct. Can you please explain how exactly the value becomes null and why only second entry processor observes the null value? > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov >Priority: Major > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=1625#comment-1625 ] Alexey Kuznetsov commented on IGNITE-6083: -- [~v.pyatkov] the issue is ready to be reviewed > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov >Assignee: Alexey Kuznetsov > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing
[ https://issues.apache.org/jira/browse/IGNITE-6083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16128819#comment-16128819 ] Vladislav Pyatkov commented on IGNITE-6083: --- I have prepare the test ([^EntryProcessorInOptimisticTxTest.java]). > Null value have appear in the entry processor, but the entry is existing > > > Key: IGNITE-6083 > URL: https://issues.apache.org/jira/browse/IGNITE-6083 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: 2.1 >Reporter: Vladislav Pyatkov > Attachments: EntryProcessorInOptimisticTxTest.java > > > In one thread load some data in a cache, after that I have execute > OPTIMISTIC, SERIALIZABLE transaction with two {{IgniteCache.invoke()}} > methods. > The value had been corrected at first {{EntryProcessor}}, but it is NULL at > second. -- This message was sent by Atlassian JIRA (v6.4.14#64029)