public interface TransactionRunner
TransactionContextfor a description of transaction semantics.
TransactionRunnerinstances are obtained by calling
TransactionRunner instance can only be used for a single invocation of
|Modifier and Type||Interface and Description|
A unit of work to be performed in the context of a transaction.
|Modifier and Type||Method and Description|
Allows overriding the default behaviour of blocking nested transactions.
Returns the timestamp at which the transaction committed.
Executes a read-write transaction, with retries as necessary.
@Nullable <T> T run(TransactionRunner.TransactionCallable<T> callable)
callable, which may return an object as the result of the work.
callablewill be retried if a transaction attempt aborts; implementations must be prepared to be called more than once. Any writes buffered by
callablewill only be applied if the transaction commits successfully. Similarly, the value produced by
callablewill only be returned by this method if the transaction commits successfully.
callable is allowed to raise an unchecked exception. Typically this prevents further
attempts to execute
callable, and the exception will propagate from this method call.
However, if a read or query in
callable detected that the transaction aborted,
callable will be retried even if it raised an exception.
run(TransactionCallable)has returned normally.
Note that the client library does not maintain any information regarding the nesting structure. If an outer transaction fails and an inner transaction succeeds, upon retry of the outer transaction, the inner transaction will be re-executed.
Use with care when certain that the inner transaction is idempotent. Avoid doing this when accessing the same db. There might be legitimate uses where access need to be made across DBs for instance.
E.g. of nesting that is discouraged, see
Copyright © 2019 Google LLC. All rights reserved.