Class Transactions
The main methods to run transactions are run(java.util.function.Consumer<com.couchbase.client.java.transactions.TransactionAttemptContext>, com.couchbase.client.java.transactions.config.TransactionOptions)
and reactive
.
Certain configurations, including the default one, will create background resources including cleanup threads, so it is highly recommended that an application create and reuse just one Transactions object.
- Author:
- Graham Pople
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionrun
(Consumer<TransactionAttemptContext> transactionLogic) Runs supplied transactional logic until success or failure.run
(Consumer<TransactionAttemptContext> transactionLogic, TransactionOptions options) Runs supplied transactional logic until success or failure.
-
Constructor Details
-
Transactions
-
-
Method Details
-
run
public TransactionResult run(Consumer<TransactionAttemptContext> transactionLogic, @Nullable TransactionOptions options) Runs supplied transactional logic until success or failure.The supplied transactional logic will be run if necessary multiple times, until either:
- The transaction successfully commits
- The transactional logic requests an explicit rollback
- The transaction timesout.
- An exception is thrown, either inside the transaction library or by the supplied transaction logic, that cannot be handled.
The transaction logic
Consumer
is provided anTransactionAttemptContext
, which contains methods allowing it to read, mutate, insert and delete documents, as well as commit or rollback the transaction.If the transaction logic performs a commit or rollback it must be the last operation performed. Else a
TransactionFailedException
will be thrown. Similarly, there cannot be a commit followed by a rollback, or vice versa - this will also raise aCoreTransactionFailedException
.If the transaction logic does not perform an explicit commit or rollback, then a commit will be performed anyway.
- Parameters:
transactionLogic
- the application's transaction logicoptions
- the configuration to use for this transaction- Returns:
- there is no need to check the returned
CoreTransactionResult
, as success is implied by the lack of a thrown exception. It contains information useful only for debugging and logging. - Throws:
TransactionFailedException
- or a derived exception if the transaction fails to commit for any reason, possibly after multiple retries. The exception contains further details of the error
-
run
Runs supplied transactional logic until success or failure. A convenience overload forrun(java.util.function.Consumer<com.couchbase.client.java.transactions.TransactionAttemptContext>, com.couchbase.client.java.transactions.config.TransactionOptions)
that provides a defaultPerTransactionConfig
-