Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-20322

Add ability to pass an observable timestamp to an implicit transaction

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    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.

      /**
      * 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
      );
      
      ....
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              v.pyatkov Vladislav Pyatkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: