[
https://issues.apache.org/jira/browse/IGNITE-20322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladislav Pyatkov updated IGNITE-20322:
---------------------------------------
Description:
*Motivation*
An implicit transaction is a transaction that is started by the table API when
a single operation is executed without specifying a transaction and the
operation is finished. Currently, implicit transactions are started by the
transaction manager API directly (an observable timestamp is tarcked manually).
But the common way to start a transaction is to use an instance of
IgniteTransactions where the observable will process automatically.
*Definition of done*
Implicit transactions should start with `IgniteTransactions` instance.
*Implementation notes*
As far as any operation can have this instance of IgniteTransactions (the
observeable timestamp is different for clients and the server), each operation
in InternalTableI should get the instance through paramentes.
{code}
/**
* Asynchronously gets a row with the same key columns values as given one from
the table.
*
* @param keyRow Row with key columns set.
* @param tx The transaction.
* @param txs Ignite transactions is used to start implicit transaction when
{@code tx} is {@code null}
* @return Future representing pending completion of the operation.
*/
CompletableFuture<BinaryRow> get(
BinaryRowEx keyRow,
@Nullable InternalTransaction tx,
IgniteTransactions txs
)
....
{code}
was:
*Motivation*
An implicit transaction is a transaction that is started by the table API when
a single operation is executed without specifying a transaction and the
operation is finished. Currently, implicit transactions are started by the
transaction manager API directly (an observable timestamp is tarcked manually).
But the common way to start a transaction is to use an instance of
IgniteTransactions where the observable will process automatically.
*Definition of done*
Implicit transactions should start with `IgniteTransactions` instance.
*Implementation notes*
As far as any operation can have this instance of IgniteTransactions (the
observeable timestamp is different for clients and the server), each operation
in InternalTableI should get the instance through paramentes.
{code}
/**
* Asynchronously gets a row with the same key columns values as given one from
the table.
*
* @param keyRow Row with key columns set.
* @param tx The transaction.
* @param txs Ignite transactions is used to start implicit transaction when
{@code tx} is {@code null}
* @return Future representing pending completion of the operation.
*/
CompletableFuture<BinaryRow> get(
BinaryRowEx keyRow,
@Nullable InternalTransaction tx,
IgniteTransactions txs
);
....
{code}
> Add ability to pass an observable timestamp to an implicit transaction
> ----------------------------------------------------------------------
>
> Key: IGNITE-20322
> URL: https://issues.apache.org/jira/browse/IGNITE-20322
> Project: Ignite
> Issue Type: Improvement
> Reporter: Vladislav Pyatkov
> Priority: Major
> Labels: ignite-3
>
> *Motivation*
> An implicit transaction is a transaction that is started by the table API
> when a single operation is executed without specifying a transaction and the
> operation is finished. Currently, implicit transactions are started by the
> transaction manager API directly (an observable timestamp is tarcked
> manually). But the common way to start a transaction is to use an instance of
> IgniteTransactions where the observable will process automatically.
> *Definition of done*
> Implicit transactions should start with `IgniteTransactions` instance.
> *Implementation notes*
> As far as any operation can have this instance of IgniteTransactions (the
> observeable timestamp is different for clients and the server), each
> operation in InternalTableI should get the instance through paramentes.
> {code}
> /**
> * Asynchronously gets a row with the same key columns values as given one
> from the table.
> *
> * @param keyRow Row with key columns set.
> * @param tx The transaction.
> * @param txs Ignite transactions is used to start implicit transaction when
> {@code tx} is {@code null}
> * @return Future representing pending completion of the operation.
> */
> CompletableFuture<BinaryRow> get(
> BinaryRowEx keyRow,
> @Nullable InternalTransaction tx,
> IgniteTransactions txs
> )
> ....
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)