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

Alexander Lapin updated IGNITE-19824:
-------------------------------------
    Description: 
h3. Motivation

Currently, all implicit read operations start RW transactions, thus it's 
possible to catch "Failed to acquire a lock due to a conflict" exception. 
Generally speaking, given issue should be resolved by substituting RW with RO 
for all implicit read transactions, however such approach will decrease 
linearizability so it's required to verify it with product management. It's 
still however possible to have special case RO for implicit single-key get 
operation that will set readTimestamp on primary replica instead of transaction 
coordinator and thus provide cluster-wide linearizability even for RO 
transactions (only for single-key implicit get operations). Within this ticket, 
such special RO transactions should be introduced along with their usage switch 
for single-get implicit reads.
h3. Definition of Done
 * Implicit single-get operations use special RO transactions that provide 
cluster-wide linearizability and thus do not throw "Failed to acquire a lock 
due to a conflict" exception.
 * ItAbstractDataStreamerTest#testAutoFlushByTimer adjusted: catch block 
removed.

h3. Implementation Notes

 

> Implicit RO should be used in implicit single gets
> --------------------------------------------------
>
>                 Key: IGNITE-19824
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19824
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Alexander Lapin
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> Currently, all implicit read operations start RW transactions, thus it's 
> possible to catch "Failed to acquire a lock due to a conflict" exception. 
> Generally speaking, given issue should be resolved by substituting RW with RO 
> for all implicit read transactions, however such approach will decrease 
> linearizability so it's required to verify it with product management. It's 
> still however possible to have special case RO for implicit single-key get 
> operation that will set readTimestamp on primary replica instead of 
> transaction coordinator and thus provide cluster-wide linearizability even 
> for RO transactions (only for single-key implicit get operations). Within 
> this ticket, such special RO transactions should be introduced along with 
> their usage switch for single-get implicit reads.
> h3. Definition of Done
>  * Implicit single-get operations use special RO transactions that provide 
> cluster-wide linearizability and thus do not throw "Failed to acquire a lock 
> due to a conflict" exception.
>  * ItAbstractDataStreamerTest#testAutoFlushByTimer adjusted: catch block 
> removed.
> h3. Implementation Notes
>  



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

Reply via email to