Package com.google.cloud.spanner
Interface AsyncTransactionManager.AsyncTransactionStep<I,O>
- Type Parameters:
I
-O
-
- All Superinterfaces:
com.google.api.core.ApiFuture<O>
,Future<O>
- Enclosing interface:
- AsyncTransactionManager
public static interface AsyncTransactionManager.AsyncTransactionStep<I,O>
extends com.google.api.core.ApiFuture<O>
AsyncTransactionManager.AsyncTransactionStep
is returned by AsyncTransactionManager.TransactionContextFuture.then(AsyncTransactionFunction, Executor)
and then(AsyncTransactionFunction, Executor)
and allows transaction steps
that should be executed serially to be chained together. Each step can contain one or more
statements that may execute in parallel.
Example usage:
final String column = "FirstName";
final long singerId = 1L;
AsyncTransactionManager manager = client.transactionManagerAsync();
TransactionContextFuture txnFuture = manager.beginAsync();
txnFuture
.then((transaction, ignored) ->
transaction.readRowAsync("Singers", Key.of(singerId), Collections.singleton(column)),
executor)
.then((transaction, row) ->
transaction.bufferAsync(
Mutation.newUpdateBuilder("Singers")
.set(column).to(row.getString(column).toUpperCase())
.build()),
executor)
.commitAsync();
-
Method Summary
Modifier and TypeMethodDescriptionCommits the transaction and returns aAsyncTransactionManager.CommitTimestampFuture
that will return the commit timestamp of the transaction, or throw the first uncaught exception in the transaction chain as anExecutionException
.<RES> AsyncTransactionManager.AsyncTransactionStep<O,
RES> then
(AsyncTransactionManager.AsyncTransactionFunction<O, RES> next, Executor executor) Adds a step to the transaction chain that should be executed using the specified executor.Methods inherited from interface com.google.api.core.ApiFuture
addListener
-
Method Details
-
then
<RES> AsyncTransactionManager.AsyncTransactionStep<O,RES> then(AsyncTransactionManager.AsyncTransactionFunction<O, RES> next, Executor executor) Adds a step to the transaction chain that should be executed using the specified executor. This step is guaranteed to be executed only after the previous step executed successfully.MoreExecutors.directExecutor()
can be be used for lightweight functions, but should be avoided for heavy or blocking operations. See alsoListenableFuture.addListener(Runnable, Executor)
for further information. -
commitAsync
AsyncTransactionManager.CommitTimestampFuture commitAsync()Commits the transaction and returns aAsyncTransactionManager.CommitTimestampFuture
that will return the commit timestamp of the transaction, or throw the first uncaught exception in the transaction chain as anExecutionException
.
-