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