[ 
https://issues.apache.org/jira/browse/IGNITE-18294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Chudov updated IGNITE-18294:
----------------------------------
    Fix Version/s: 3.0.0-beta2

> Multiple lock intentions support
> --------------------------------
>
>                 Key: IGNITE-18294
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18294
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Chudov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Current implementation of HeapLockManager relies on waiters that can support 
> only one lock intention for each transaction at a moment of time. This can 
> lead to problems like following:
> - there are transactions tx1, tx2, tx3 started in corresponding order;
> - all txs acquire S-locks;
> - tx2 tries to acquire IX-lock, it's incompatible with S-locks from tx1 and 
> tx3, this is a lock intention and a future is created, which is completed 
> when SIX-lock is acquired (supremum of S and IX locks)
> - tx2 concurrently tries to acquire X-lock, this is another lock intention, 
> supremum of locks for tx2 is X-lock. The information about previous intention 
> is lost;
> - tx3 is committed, and tx2 waits only for tx1 but it is not allowed to wait 
> for it due to wait-die deadlock prevention. All lock intentions should be 
> canceled.
> Definition of done:
> We have lock mode counters inside of waiter, they should be adapted for lock 
> intention support. Also, "upgraded" flag of waiters and all the logic related 
> to "previous lock mode" should be removed. After that, the test scenario 
> described above should pass.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to