[ https://issues.apache.org/jira/browse/IGNITE-17261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Lapin updated IGNITE-17261: ------------------------------------- Attachment: Screenshot from 2022-07-06 17-00-26.png > 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 > Attachments: Screenshot from 2022-07-06 17-00-26.png > > > 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)