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