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

 Kirill Sizov updated IGNITE-21500:
-----------------------------------
    Description: 
*Motivation* 

Implicit transactions are created without a transaction from the client point 
of view (the transaction is created inside the library and is not exposed 
outside). 
A failure to execute such transaction because of the primary replica related 
exceptions (PrimaryReplicaMissException, etc.). should not result in the users 
seeing them. Instead, retrying these transactions will likely to succeed.

*Definition of done*
An implicit transaction that failed to execute because of 
PrimaryReplicaMissException, PrimaryReplicaAwaitException, 
TransactionExceptions with messages like "Failed to get the primary replica", 
"Failed to resolve the primary replica node" 
should be retried.
If it is not possible to await for the primary replica, the transaction will 
fail. The primary replica failure exceptions are not propagated to the users in 
cases of implicit transactions. 

*Implementation detail*
There might be some difficulties with implicit scan and implicit direct RO 
transactions. No issues with plain implicit RW transactions is expected.

  was:
*Motivation* 

Implicit transactions usually are "full" and include just one transactional 
request which can be safely retried in case of the primary replica related 
exceptions (PrimaryReplicaMissException, etc.). So users will never see these 
exceptions in case of primary replica failures.

*Definition of done*

PrimaryReplicaMissException, PrimaryReplicaAwaitException, 
TransactionExceptions with messages like "Failed to get the primary replica", 
"Failed to resolve the primary replica node" are not propagated to the users in 
cases of implicit full transactions. If it is not possible to await for primary 
replica, PrimaryReplicaAwaitException or transaction exception with timeout is 
still possible.

*Implementation detail*
Likely all that is required to do - is to handle the mentioned kinds of 
exceptions in {{InternalTableImpl.wrapReplicationException}} and rethrow an 
exception with the desired message.


> Retry implicit transactions when primary replica failed or moved
> ----------------------------------------------------------------
>
>                 Key: IGNITE-21500
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21500
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation* 
> Implicit transactions are created without a transaction from the client point 
> of view (the transaction is created inside the library and is not exposed 
> outside). 
> A failure to execute such transaction because of the primary replica related 
> exceptions (PrimaryReplicaMissException, etc.). should not result in the 
> users seeing them. Instead, retrying these transactions will likely to 
> succeed.
> *Definition of done*
> An implicit transaction that failed to execute because of 
> PrimaryReplicaMissException, PrimaryReplicaAwaitException, 
> TransactionExceptions with messages like "Failed to get the primary replica", 
> "Failed to resolve the primary replica node" 
> should be retried.
> If it is not possible to await for the primary replica, the transaction will 
> fail. The primary replica failure exceptions are not propagated to the users 
> in cases of implicit transactions. 
> *Implementation detail*
> There might be some difficulties with implicit scan and implicit direct RO 
> transactions. No issues with plain implicit RW transactions is expected.



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

Reply via email to