You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexey Scherbakov (Jira)" <ji...@apache.org> on 2021/07/09 08:22:00 UTC
[jira] [Created] (IGNITE-15085) Implement tx coordination
Alexey Scherbakov created IGNITE-15085:
------------------------------------------
Summary: Implement tx coordination
Key: IGNITE-15085
URL: https://issues.apache.org/jira/browse/IGNITE-15085
Project: Ignite
Issue Type: Task
Reporter: Alexey Scherbakov
This ticket implies the implementation of tx coordination, as described in [1].
This includes:
* TxManager - top-level manager for tx state and coordination
* pre-writes - each tx write is pre-written to partition store in special format
* replicated tx state - tx state is stored in the partition's raft group
* integration with lock manager (see *precaution* chapter in [1])
The example of single key tx:
{noformat}
Tx thread TxCoordinator Leaseholder
tx.start
--------->
assign timestamp (id)
txstate = PENDING
<---------
table.put(k,v)
--------->
lh = metastore.getLeaseholder(k)
------------>
write txstate = PENDING
fut=lockManager.tryAcquire(k,timestamp);
wait for completion async
prewrite(k, v)
<---------
tx.commit
--------->
------------>
write txstate = COMMITTED
lockManager.tryRelease(k, timestamp)
<-----------
txmap.lh.state = COMMITTED async clear garbage
when all leasholders are replied,
reply to initiator
<--------
{noformat}
[1] https://github.com/apache/ignite-3/tree/main/modules/transactions
--
This message was sent by Atlassian Jira
(v8.3.4#803005)