[ 
https://issues.apache.org/jira/browse/IGNITE-19849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladislav Pyatkov updated IGNITE-19849:
---------------------------------------
    Description: 
*Motivation*
Currently, transaction id is generated on a server node (the node is also 
called a transaction coordinator):
{code}
HybridTimestamp beginTimestamp = clock.now();
UUID txId = transactionIdGenerator.transactionIdFor(beginTimestamp);
{code}
The transaction id has start time internally. In other word, when we call 
{{transactions().begin()}} we define a time when the transaction is started. 
The time is used in deadlock resolution mechanism.
In case when the clock on different nodes slightly skewed we may receive 
different order unlike that we have in client side. Because the transactions 
have various coordinators with their clocks. Of course, unexpected behavior of 
deadlock resolution is taken a place here.
*Definition of done*
Transaction id is generated on client side, then passes to server. The server 
starts the transaction with a predefined id.
The transaction's order is defined in client side regardless of clock on 
servers.

  was:
*Motivation*
Currently, transaction id is generated on a server node (the node is also 
called a transaction coordinator):
{code}
HybridTimestamp beginTimestamp = clock.now();
UUID txId = transactionIdGenerator.transactionIdFor(beginTimestamp);
{code}
Transaction id has start time internally. In other word, when we call 
{{transactions().begin()}} we define a time when the transaction is started. 
The time is used in deadlock resolution mechanism.
In case when the clock on different nodes slightly skewed we may receive 
different order unlike that we have in client side. Because the transactions 
have various coordinators with their clocks. Of course, unexpected behavior of 
deadlock resolution is taken a place here.
*Definition of done*
Transaction id is generated on client side, then passes to server. The server 
starts the transaction with a predefined id.
The transaction's order is defined in client side regardless of clock on 
servers.


> Generate transaction id in client side
> --------------------------------------
>
>                 Key: IGNITE-19849
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19849
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation*
> Currently, transaction id is generated on a server node (the node is also 
> called a transaction coordinator):
> {code}
> HybridTimestamp beginTimestamp = clock.now();
> UUID txId = transactionIdGenerator.transactionIdFor(beginTimestamp);
> {code}
> The transaction id has start time internally. In other word, when we call 
> {{transactions().begin()}} we define a time when the transaction is started. 
> The time is used in deadlock resolution mechanism.
> In case when the clock on different nodes slightly skewed we may receive 
> different order unlike that we have in client side. Because the transactions 
> have various coordinators with their clocks. Of course, unexpected behavior 
> of deadlock resolution is taken a place here.
> *Definition of done*
> Transaction id is generated on client side, then passes to server. The server 
> starts the transaction with a predefined id.
> The transaction's order is defined in client side regardless of clock on 
> servers.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to