[ 
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|https://issues.apache.org/jira/browse/IGNITE-16882] along with 
[adjusting HLC timestamp|https://issues.apache.org/jira/browse/IGNITE-17222] 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.
 * COMMITTED - 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 partition 
in order to guarantee RO reads and tx commit linearizability, meaning that it's 
illegal to commit transaction with commitTimestamp less or equal to RO 
timestamp 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|https://issues.apache.org/jira/browse/IGNITE-16882] along with 
[adjusting HLC timestamp|https://issues.apache.org/jira/browse/IGNITE-17222] 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.
 * COMMITTED - 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 partition 
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 
timestamp 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.  


> 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|https://issues.apache.org/jira/browse/IGNITE-16882] along with 
> [adjusting HLC timestamp|https://issues.apache.org/jira/browse/IGNITE-17222] 
> 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.
>  * COMMITTED - 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 
> partition in order to guarantee RO reads and tx commit linearizability, 
> meaning that it's illegal to commit transaction with commitTimestamp less or 
> equal to RO timestamp 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