@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())); }
@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())); }