[ https://issues.apache.org/jira/browse/IGNITE-19849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Lapin closed IGNITE-19849. ------------------------------------ Ignite Flags: (was: Docs Required,Release Notes Required) > 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)