[
https://issues.apache.org/jira/browse/IGNITE-20700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-20700:
-------------------------------------
Description:
h3. Motivation
Transaction coordinator should properly handle:
* All kind of exceptions that might be thrown during sending finish request
and finish response awaiting.
* Commit partition primary replica changes.
* Including dedicated scenario of commit partition recovery after commit
partition majority loss.
h3. Definition of Done
Transaction finish request is sent in a durable manner.
h3. Implementation Notes
* Commit timestamp, tx outcome (commit/abort), enlisted paritions set, etc are
calculated once only and do not change over retries.
* Recipient on the other hand may change, and should be evaluated as
PD.awaitPrimaryReplica(commitPartition). Thus, we will handle both primary
replica changes and commit partition recovery after majority loss.
* On the commit partition side, finish request should await for all locks to
be released (see lock released flag in txnState).
* It's possible for finish request to see a terminated transaction with
another outcome, meaning that recovery logic (that's not yet implemented) will
rollback the transaction while finish request contains commit as the desired
outcome. In that case, we expect the user to receive a tx-was-rolled-back
exception. Any consecutive user calls, both commit and rollback should not
throw exceptions.
> Implement durable transaction coordinator finish
> ------------------------------------------------
>
> Key: IGNITE-20700
> URL: https://issues.apache.org/jira/browse/IGNITE-20700
> Project: Ignite
> Issue Type: Improvement
> Reporter: Alexander Lapin
> Priority: Major
>
> h3. Motivation
> Transaction coordinator should properly handle:
> * All kind of exceptions that might be thrown during sending finish request
> and finish response awaiting.
> * Commit partition primary replica changes.
> * Including dedicated scenario of commit partition recovery after commit
> partition majority loss.
> h3. Definition of Done
> Transaction finish request is sent in a durable manner.
> h3. Implementation Notes
> * Commit timestamp, tx outcome (commit/abort), enlisted paritions set, etc
> are calculated once only and do not change over retries.
> * Recipient on the other hand may change, and should be evaluated as
> PD.awaitPrimaryReplica(commitPartition). Thus, we will handle both primary
> replica changes and commit partition recovery after majority loss.
> * On the commit partition side, finish request should await for all locks to
> be released (see lock released flag in txnState).
> * It's possible for finish request to see a terminated transaction with
> another outcome, meaning that recovery logic (that's not yet implemented)
> will rollback the transaction while finish request contains commit as the
> desired outcome. In that case, we expect the user to receive a
> tx-was-rolled-back exception. Any consecutive user calls, both commit and
> rollback should not throw exceptions.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)