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