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