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