[ 
https://issues.apache.org/jira/browse/IGNITE-12746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17057915#comment-17057915
 ] 

Ivan Rakov commented on IGNITE-12746:
-------------------------------------

[~ilyak]
> What is the scope of this problem?
It's rare concurrent scenario which is possible with optimistic transactions 
(putAll to transactional cache works as optimistic + read_commited transaction).
Here's the flow that leads to the deadlock:
1) TX 1 adds MVCC candidates on primary node for keys 1, 3 and 5 (addLocal call 
on prepare phase)
2) TX 2 adds MVCC candidates on primary node for keys 2, 3 and 6 (addLocal call 
on prepare phase, XID 1 is first in candidates queue for key 3)
3) TX 2 acquires lock for key 2 (readyLocks call on prepare phase)
4) TX 1 acquires lock for key 1 (readyLocks call on prepare phase)
5) TX 2 tries to acquire lock for 3 (unsuccessfully: TX 1 becomes an owner 
instead: it's first in the queue and its previous chain item [key 1] in the 
thread chain was concurrently owned by TX 1) 
6) Neither TX 1 nor TX 2 continues processing of its thread chain

[~ascherbakov] 
I agree with all of your propositions. I guess I need a fresh TC visa then.

> Regression in GridCacheColocatedDebugTest: putAll of sorted keys causes 
> deadlock
> --------------------------------------------------------------------------------
>
>                 Key: IGNITE-12746
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12746
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>            Reporter: Ilya Kasnacheev
>            Assignee: Ivan Rakov
>            Priority: Blocker
>             Fix For: 2.8.1
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> After this commit:
> 7d4bb49264b IGNITE-12329 Invalid handling of remote entries causes partition 
> desync and transaction hanging in COMMITTING state.
> the following tests:
> org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedDebugTest#testPutsMultithreadedColocated
> org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedDebugTest#testPutsMultithreadedMixed
> started to be flaky because their ordered putAll operations started 
> deadlocking.
> This is a regression compared to 2.7 and should be fixed, since it may affect 
> production clusters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to