[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing

2018-02-20 Thread Alexey Goncharuk (JIRA)

[ 
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

2018-02-20 Thread Alexey Kuznetsov (JIRA)

[ 
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

2018-02-20 Thread ASF GitHub Bot (JIRA)

[ 
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

2018-02-25 Thread Alexey Goncharuk (JIRA)

[ 
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

2018-02-27 Thread Alexey Kuznetsov (JIRA)

[ 
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

2018-02-28 Thread ASF GitHub Bot (JIRA)

[ 
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

2018-02-28 Thread Alexey Kuznetsov (JIRA)

[ 
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

2018-02-28 Thread Alexey Goncharuk (JIRA)

[ 
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

2018-03-02 Thread Alexey Kuznetsov (JIRA)

[ 
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

2018-03-29 Thread Alexey Kuznetsov (JIRA)

[ 
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

2017-08-16 Thread Vladislav Pyatkov (JIRA)

[ 
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)


[jira] [Commented] (IGNITE-6083) Null value have appear in the entry processor, but the entry is existing

2017-11-14 Thread Alexey Kuznetsov (JIRA)

[ 
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)