@Test public void lockRequestIsNonBlocking() throws InterruptedException { when(LOCK_CLIENT.lock(CLIENT, LOCK_NAME)).thenAnswer((invocation) -> { LockRequest request = (LockRequest) invocation.getArguments()[1]; assertThat(request.getBlockingMode(), is(BlockingMode.DO_NOT_BLOCK)); return null; }); LOCK_CLIENT.lock(CLIENT, LOCK_NAME); }
boolean indefinitelyBlocking = isIndefinitelyBlocking(request.getBlockingMode()); if (indefinitelyBlocking) { indefinitelyBlockingThreads.add(Thread.currentThread()); @Nullable Long deadline = (request.getBlockingDuration() == null) ? null : System.nanoTime() + request.getBlockingDuration().toNanos(); if (request.getBlockingMode() == BLOCK_UNTIL_TIMEOUT) { if (request.getLockGroupBehavior() == LOCK_AS_MANY_AS_POSSIBLE) { tryLocks(client, request, DO_NOT_BLOCK, null, LOCK_AS_MANY_AS_POSSIBLE, locks, tryLocks(client, request, request.getBlockingMode(), deadline, request.getLockGroupBehavior(), locks, failedLocks); if (request.getBlockingMode() == BlockingMode.BLOCK_INDEFINITELY_THEN_RELEASE) { if (log.isTraceEnabled()) { logNullResponse(client, request, null);
public static SimpleLockRequest of(LockRequest request, String lockDescriptor, LockMode lockMode, String clientId) { return ImmutableSimpleLockRequest.builder() .lockDescriptor(lockDescriptor) .lockMode(lockMode) .lockCount(request.getLocks().size()) .lockTimeout(request.getLockTimeout().toMillis()) .lockGroupBehavior(request.getLockGroupBehavior()) .blockingMode(request.getBlockingMode()) .blockingDuration(extractBlockingDurationOrNull(request.getBlockingDuration())) .versionId(request.getVersionId()) .creatingThread(request.getCreatingThreadName()) .clientId(clientId).build(); }
private LockRefreshToken lock(LockClient client, LockRequest request) throws InterruptedException { if (request.getBlockingMode() == BlockingMode.DO_NOT_BLOCK) { if (client == LockClient.ANONYMOUS) { return nonBlockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); && (request.getBlockingMode() != BlockingMode.BLOCK_INDEFINITELY_THEN_RELEASE)) { LockRequest.Builder newRequest = LockRequest.builder(request.getLockDescriptors()); newRequest.doNotBlock();
private LockRefreshToken lock(LockClient client, LockRequest request) throws InterruptedException { if (request.getBlockingMode() == BlockingMode.DO_NOT_BLOCK) { if (client == LockClient.ANONYMOUS) { return nonBlockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); && (request.getBlockingMode() != BlockingMode.BLOCK_INDEFINITELY_THEN_RELEASE)) { LockRequest.Builder newRequest = LockRequest.builder(request.getLockDescriptors()); newRequest.doNotBlock();