[
https://issues.apache.org/jira/browse/IGNITE-5935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16641358#comment-16641358
]
Ivan Pavlukhin edited comment on IGNITE-5935 at 10/18/18 3:03 PM:
------------------------------------------------------------------
If a node fails before finishing all initiated by it transactions they must be
removed from active list on mvcc coordinator strictly after local transaction
completion on each participating node. There are 2 cases handled differently
depending on node type (client or server).
# Transactions left by a server node are removed from the active list on PME.
# Transactions left by a client node are removed from the active list after
cluster-wide voting when each node gives a vote after making decision on all
transactions recovery on that node.
Also _partition counters_ should be kept consistent among partition replicas
after recovery. Current protocol delivers _partition counters_ to backups on
_prepare_ phase. During recovery there could occur a situation when transaction
is recovering case when primary has failed and one backup received counters and
another do not. Such case is a rollback and counters should be aligned. As
primary has failed PME will occur. We rely on counters alignment during PME.
was (Author: pavlukhin):
If a node fails before finishing all initiated by it transactions they must be
removed from active list on mvcc coordinator strictly after local transaction
completion on each participating node. There are 2 cases handled differently
depending on node type (client or server).
# Transactions left by a server node are removed from the active list on PME.
# Transactions left by a client node are removed from the active list after
cluster-wide voting when each node gives a vote after making decision on all
transactions recovery on that node.
Possible problem: not all transactions can be recovered. Such transactions can
prevent other recovered transactions removal from the active list.
Also _partition counters_ should be kept consistent among partition replicas
after recovery. Current protocol delivers _partition counters_ to backups on
_prepare_ phase. During recovery there could occur a situation when transaction
is recovering case when primary has failed and one backup received counters and
another do not. Such case is a rollback and counters should be aligned. As
primary has failed PME will occur. We rely on counters alignment during PME.
> MVCC TX: Tx recovery protocol
> -----------------------------
>
> Key: IGNITE-5935
> URL: https://issues.apache.org/jira/browse/IGNITE-5935
> Project: Ignite
> Issue Type: Task
> Components: cache, mvcc
> Reporter: Semen Boikov
> Assignee: Ivan Pavlukhin
> Priority: Major
> Fix For: 2.7
>
>
> Transaction recovery procedure is initiated when near node failed before
> transaction was finished.
> In MVCC transactions _partition update counter_ modification is started on
> prepare phase. If a transaction was prepared at least on one node we need to
> finish _partition update counter_ modification consistently on all
> participating nodes.
> Also recovered transaction should be removed from active transactions list on
> mvcc coordinator.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)