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