Module io.github.bucket4j.core
Interface SelectForUpdateBasedTransaction
-
public interface SelectForUpdateBasedTransactionDescribes the set of operations thatAbstractSelectForUpdateBasedProxyManagertypically 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()
- begin -
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidbegin(Optional<Long> timeoutNanos)Begins transaction if underlying storage requires transactions.voidcommit(Optional<Long> timeoutNanos)Commits 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.LockAndGetResulttryLockAndGet(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 Detail
-
begin
void begin(Optional<Long> timeoutNanos)
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
void commit(Optional<Long> timeoutNanos)
Commits transaction if underlying storage requires transactions- Parameters:
timeoutNanos- optional timeout in nanoseconds
-
tryLockAndGet
LockAndGetResult tryLockAndGet(Optional<Long> timeoutNanos)
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
boolean tryInsertEmptyData(Optional<Long> timeoutNanos)
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
void update(byte[] data, RemoteBucketState newState, Optional<Long> timeoutNanos)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
-
-