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

Alexander Lapin updated IGNITE-17261:
-------------------------------------
    Description: 
Because of lock-free nature, RO reads might interact with writeIntents, meaning 
that such intents should be either evaluated as committed, aborted or pending. 
In order to perform writeIntent resolution it's required to check txnState 
along with adjusting HLC timestamp on txnStates group. If transaction occurred 
to be
 * pending (there is no explicit txnState for given txnId specified in 
writeIntent) or txnState is ABORTED - writeIntent ignored.
 * COMMITED - writeInent  returned as RO read response.

Please pay attention that, as was mentioned above, besides writeIntent 
resolution itself it's required to adjust HLC timestamp on txnState partitiion 
in order to guarantee RO reads and tx commit inevitability, meaning that it's 
illegal to commit transaction with commitTimestamp less or equal to RO timesmat 
that already resolved corresponding writeInent as pending. It's not only 
required to perform timestamp adjustment but it's also important to do it 
atomically to txnState switch.  

  was:Because of lock-free nature RO reads might interact with writeIntents, 
meaning that such intents should be either evaluated as committed, aborted or 
pending. In order to perform writeIntent resolution it's required to check 
txnState along with [adjusting HLC 
timestamp|https://issues.apache.org/jira/browse/IGNITE-17222] on txnStates 
group.


> Implement write intent resolution logic for RO reads
> ----------------------------------------------------
>
>                 Key: IGNITE-17261
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17261
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Alexander Lapin
>            Priority: Major
>              Labels: ignite-3, transaction3_ro
>
> Because of lock-free nature, RO reads might interact with writeIntents, 
> meaning that such intents should be either evaluated as committed, aborted or 
> pending. In order to perform writeIntent resolution it's required to check 
> txnState along with adjusting HLC timestamp on txnStates group. If 
> transaction occurred to be
>  * pending (there is no explicit txnState for given txnId specified in 
> writeIntent) or txnState is ABORTED - writeIntent ignored.
>  * COMMITED - writeInent  returned as RO read response.
> Please pay attention that, as was mentioned above, besides writeIntent 
> resolution itself it's required to adjust HLC timestamp on txnState 
> partitiion in order to guarantee RO reads and tx commit inevitability, 
> meaning that it's illegal to commit transaction with commitTimestamp less or 
> equal to RO timesmat that already resolved corresponding writeInent as 
> pending. It's not only required to perform timestamp adjustment but it's also 
> important to do it atomically to txnState switch.  



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

Reply via email to