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

Reply via email to