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

Vyacheslav Koptilin reassigned IGNITE-20779:
--------------------------------------------

    Assignee: Vladislav Pyatkov

> Transaction operation might throw no exception on enlisting attempt, while 
> transaction is in FINISHING state
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-20779
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20779
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> Read-write lock is used in ReadWriteTransactionImpl to _enlist_ a partition 
> and to _finish_ the transaction ({_}read{_} and _write_ locks are acquired 
> respectively). But only final state is checked inside the lock (COMMITTED or 
> ABORTED), while this state is set asynchronously when the transaction is 
> finished *and* the response is received from the commit partition. 
> ReadWriteTransactionImpl#finish sets FINISHING state synchronously, so this 
> state must also be checked within the locks.
> h3.  Implementation notes
>  # Add checking the FINISHING state to the method 
> ReadWriteTransactionImpl#checkEnlistReady
>  # add checking the FINISHING state to the method 
> ReadWriteTransactionImpl#finish
>  # rename checkEnlistReady to checkEnlistPossible (optional)
>  # add assertion that ReadWriteTransactionImpl#finishFuture is null before 
> assigning a value to it.



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

Reply via email to