[
https://issues.apache.org/jira/browse/IGNITE-23980?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladislav Pyatkov updated IGNITE-23980:
---------------------------------------
Description:
h3. Motivation
We should not execute any operation if the transaction was committed. It is
true for RW transactions, but RO can be used after their state has been
finalized. Dispite internla transaction state is final
({_}ReadOnlyTransactionImpl#finishGuard == true{_}) we do not check it in
operation (look into {_}InternalTableImpl#get(key, tx){_}).
Any operation cannot be processed for a committed/rolled-back RW transaction
because we are checking the transaction state during enlist
({_}ReadWriteTransactionImpl#enlist(){_}).
h3. Definition of done
* We have to have similar behavior for RO as for RW.
* We ought to exclude process KV operations (get/getAll) in
committed/rolled-back RO in the single thread case at least.
* We need to reject SQL operations in committed/rolled-back RO.
was:
h3. Motivation
We should not execute any operation if the transaction was committed. It is
true for RW transactions, but RO can be used after their state has been
finalized. Dispite internla transaction state is final
({_}ReadOnlyTransactionImpl#finishGuard == true{_}) we do not check it in
operation (look into {_}InternalTableImpl#get(key, tx){_}).
Any operation cannot be processed for a committed/rolled-back RW transaction
because we are checking the transaction state during enlist
({_}ReadWriteTransactionImpl#enlist(){_}).
h3. Definition of done
* We have to have similar behavior for RO as for RW.
* We ought to exclude process operations (get/getAll) in committed/rolled-back
RO in the single thread case at least.
* We need to reject SQL operations in committed/rolled-back RO.
> Fail operations in a completed transaction
> ------------------------------------------
>
> Key: IGNITE-23980
> URL: https://issues.apache.org/jira/browse/IGNITE-23980
> Project: Ignite
> Issue Type: Improvement
> Reporter: Roman Puchkovskiy
> Priority: Major
> Labels: ignite-3
>
> h3. Motivation
> We should not execute any operation if the transaction was committed. It is
> true for RW transactions, but RO can be used after their state has been
> finalized. Dispite internla transaction state is final
> ({_}ReadOnlyTransactionImpl#finishGuard == true{_}) we do not check it in
> operation (look into {_}InternalTableImpl#get(key, tx){_}).
> Any operation cannot be processed for a committed/rolled-back RW transaction
> because we are checking the transaction state during enlist
> ({_}ReadWriteTransactionImpl#enlist(){_}).
> h3. Definition of done
> * We have to have similar behavior for RO as for RW.
> * We ought to exclude process KV operations (get/getAll) in
> committed/rolled-back RO in the single thread case at least.
> * We need to reject SQL operations in committed/rolled-back RO.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)