Module io.github.bucket4j.core
Interface SelectForUpdateBasedTransaction
public interface SelectForUpdateBasedTransaction
Describes the set of operations that
AbstractSelectForUpdateBasedProxyManager typically performs in reaction to user request.
The typical flow is following:
- begin -
begin(Optional) - lock -
tryLockAndGet(Optional) - update -
update(byte[],RemoteBucketState,Optional) - commit -
commit(Optional) - release -
release()
-
Method Summary
Modifier and TypeMethodDescriptionvoidBegins transaction if underlying storage requires transactions.voidCommits transaction if underlying storage requires transactionsvoidrelease()Frees resources associated with this transactionvoidrollback()Rollbacks transaction if underlying storage requires transactionsbooleantryInsertEmptyData(Optional<Long> timeoutNanos) Creates empty data by for the key associated with this transaction.tryLockAndGet(Optional<Long> timeoutNanos) Locks data by the key associated with this transaction and returns data that is associated with the key.voidupdate(byte[] data, RemoteBucketState newState, Optional<Long> timeoutNanos) Updates the data by the key associated with this transaction.
-
Method Details
-
begin
Begins transaction if underlying storage requires transactions. There is strong guarantee thatcommit(Optional)orrollback()will be called ifbegin(Optional)returns successfully.- Parameters:
timeoutNanos- optional timeout in nanoseconds
-
rollback
void rollback()Rollbacks transaction if underlying storage requires transactions -
commit
Commits transaction if underlying storage requires transactions- Parameters:
timeoutNanos- optional timeout in nanoseconds
-
tryLockAndGet
Locks data by the key associated with this transaction and returns data that is associated with the key.- Parameters:
timeoutNanos- optional timeout in nanoseconds- Returns:
- the data by the key associated with this transaction, or null data associated with key does not exist
-
tryInsertEmptyData
Creates empty data by for the key associated with this transaction. This operation is required to be able to lock data in the scope of next transaction.- Parameters:
timeoutNanos- optional timeout in nanoseconds- Returns:
- true if data has been inserted
-
update
Updates the data by the key associated with this transaction.- Parameters:
data- bucket state to persistsnewState- new state of bucket - can be used to extract additional data is useful for persistence or logging.timeoutNanos- optional timeout in nanoseconds
-
release
void release()Frees resources associated with this transaction
-