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

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

According to 
[IEP-91|https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol#IEP91:Transactionprotocol-Coordinatorfailure]
 it's required to have fail-fast tx failure only in case of both coordinator 
and commitPartition unavailability. In IEP given state marked as "hanging"
{quote}Commit partition group nodes have lost the majority. In this case the 
state of txn is unknown. We need to wait until the majority is restored and 
until this happens all locks are remaining held. We should mark such 
transactions as “hanging”. All subsequent transactions which are trying to take 
a lock and see the locker tx in the hanging state are immediately failed with a 
message like: “Failed to take a lock because the previous locker state is 
unknown ” + tx info.
{quote}
However, currently transaction will immediately fail event if commitCartition 
is up and running just if coordinator is missing. It is worth to adjust the 
implementation to the logic specified in PR.


h3. Definition of Done
 * We should mark tx as abandoned if both coordinator and commitPartition are 
missing.
 * If tx is not abandoned (coordinator is missing but commitPartition is 
considered alive (e.g. there is a corresponding primary replica)) then a 
transaction that faced lock conflict should behave according to the deadlock 
prevention rules.
 * If tx is maked as abandoned then transaction that faced lock conflict fail 
fast with “Failed to take a lock because the previous locker state is unknown ” 
+ tx info.

> Consider abandoned as not only lack of coordinator but also lack of 
> commitPartition
> -----------------------------------------------------------------------------------
>
>                 Key: IGNITE-21179
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21179
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Alexander Lapin
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> According to 
> [IEP-91|https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol#IEP91:Transactionprotocol-Coordinatorfailure]
>  it's required to have fail-fast tx failure only in case of both coordinator 
> and commitPartition unavailability. In IEP given state marked as "hanging"
> {quote}Commit partition group nodes have lost the majority. In this case the 
> state of txn is unknown. We need to wait until the majority is restored and 
> until this happens all locks are remaining held. We should mark such 
> transactions as “hanging”. All subsequent transactions which are trying to 
> take a lock and see the locker tx in the hanging state are immediately failed 
> with a message like: “Failed to take a lock because the previous locker state 
> is unknown ” + tx info.
> {quote}
> However, currently transaction will immediately fail event if commitCartition 
> is up and running just if coordinator is missing. It is worth to adjust the 
> implementation to the logic specified in PR.
> h3. Definition of Done
>  * We should mark tx as abandoned if both coordinator and commitPartition are 
> missing.
>  * If tx is not abandoned (coordinator is missing but commitPartition is 
> considered alive (e.g. there is a corresponding primary replica)) then a 
> transaction that faced lock conflict should behave according to the deadlock 
> prevention rules.
>  * If tx is maked as abandoned then transaction that faced lock conflict fail 
> fast with “Failed to take a lock because the previous locker state is unknown 
> ” + tx info.



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

Reply via email to