public static <T, E extends Exception> TransactionTask<T, E> asLockUnaware( final LockAwareTransactionTask<T, E> task, final Iterable<HeldLocksToken> locks) { return tx -> task.execute(tx, locks); } }
private <T, E extends Exception> LockAwareTransactionTask<T, E> wrapTask(LockAwareTransactionTask<T, E> task) { return (transaction, locks) -> task.execute(wrap(transaction), locks); }
@Override public <T, E extends Exception> T runTaskWithLocksThrowOnConflict( Iterable<HeldLocksToken> lockTokens, LockAwareTransactionTask<T, E> task) throws E, TransactionFailedRetriableException { checkOpen(); AdvisoryLocksCondition lockCondition = new ExternalLocksCondition(getLockService(), ImmutableSet.copyOf(lockTokens)); return runTaskWithConditionThrowOnConflict(lockCondition, (transaction, condition) -> task.execute(transaction, condition.getLocks())); } }
@Override public <T, E extends Exception> T runTaskWithLocksWithRetry( Iterable<HeldLocksToken> lockTokens, Supplier<LockRequest> lockSupplier, LockAwareTransactionTask<T, E> task) throws E, InterruptedException { checkOpen(); Supplier<AdvisoryLocksCondition> conditionSupplier = AdvisoryLockConditionSuppliers.get(getLockService(), lockTokens, lockSupplier); return runTaskWithConditionWithRetry(conditionSupplier, (transaction, condition) -> task.execute(transaction, condition.getLocks())); }
public static <T, E extends Exception> TransactionTask<T, E> asLockUnaware( final LockAwareTransactionTask<T, E> task, final Iterable<HeldLocksToken> locks) { return tx -> task.execute(tx, locks); } }
private <T, E extends Exception> LockAwareTransactionTask<T, E> wrapTask(LockAwareTransactionTask<T, E> task) { return (transaction, locks) -> task.execute(wrap(transaction), locks); }
@Override public <T, E extends Exception> T runTaskWithLocksThrowOnConflict( Iterable<HeldLocksToken> lockTokens, LockAwareTransactionTask<T, E> task) throws E, TransactionFailedRetriableException { checkOpen(); AdvisoryLocksCondition lockCondition = new ExternalLocksCondition(getLockService(), ImmutableSet.copyOf(lockTokens)); return runTaskWithConditionThrowOnConflict(lockCondition, (transaction, condition) -> task.execute(transaction, condition.getLocks())); } }
@Override public <T, E extends Exception> T runTaskWithLocksWithRetry( Iterable<HeldLocksToken> lockTokens, Supplier<LockRequest> lockSupplier, LockAwareTransactionTask<T, E> task) throws E, InterruptedException { checkOpen(); Supplier<AdvisoryLocksCondition> conditionSupplier = AdvisoryLockConditionSuppliers.get(getLockService(), lockTokens, lockSupplier); return runTaskWithConditionWithRetry(conditionSupplier, (transaction, condition) -> task.execute(transaction, condition.getLocks())); }