Interface AsyncTransactionManager

  • All Superinterfaces:
    AutoCloseable

    public interface AsyncTransactionManager
    extends AutoCloseable
    An interface for managing the life cycle of a read write transaction including all its retries. See TransactionContext for a description of transaction semantics.

    At any point in time there can be at most one active transaction in this manager. When that transaction is committed, if it fails with an ABORTED error, calling resetForRetryAsync() would create a new AsyncTransactionManager.TransactionContextFuture. The newly created transaction would use the same session thus increasing its lock priority. If the transaction is committed successfully, or is rolled back or commit fails with any error other than ABORTED, the manager is considered complete and no further transactions are allowed to be created in it.

    Every AsyncTransactionManager should either be committed or rolled back. Failure to do so can cause resources to be leaked and deadlocks. Easiest way to guarantee this is by calling close() in a finally block.

    See Also:
    DatabaseClient#transactionManagerAsync()
    • Method Detail

      • beginAsync

        AsyncTransactionManager.TransactionContextFuture beginAsync()
        Creates a new read write transaction. This must be called before doing any other operation and can only be called once. To create a new transaction for subsequent retries, see #resetForRetry().
      • rollbackAsync

        com.google.api.core.ApiFuture<Void> rollbackAsync()
        Rolls back the currently active transaction. In most cases there should be no need to call this explicitly since close() would automatically roll back any active transaction.
      • close

        void close()
        Closes the manager. If there is an active transaction, it will be rolled back. Underlying session will be released back to the session pool.
        Specified by:
        close in interface AutoCloseable
      • closeAsync

        com.google.api.core.ApiFuture<Void> closeAsync()
        Closes the transaction manager. If there is an active transaction, it will be rolled back. The underlying session will be released back to the session pool. The returned ApiFuture is done when the transaction (if any) has been rolled back.