static RequestInfo of(WaitForLocksRequest request) { return ImmutableRequestInfo.of( request.getRequestId(), request.getClientDescription().orElse(EMPTY_DESCRIPTION), request.getLockDescriptors()); } }
@Override public AsyncResult<Void> waitForLocks(WaitForLocksRequest request) { return lockService.waitForLocks( request.getRequestId(), request.getLockDescriptors(), TimeLimit.of(request.getAcquireTimeoutMs())); }
private void waitFor(Set<LockDescriptor> lockDescriptors) { WaitForLocksRequest request = WaitForLocksRequest.of(lockDescriptors, transactionConfig.get().getLockAcquireTimeoutMillis()); WaitForLocksResponse response = timelockService.waitForLocks(request); if (!response.wasSuccessful()) { log.error("Timed out waiting for commits to complete. Timeout was {} ms. First ten locks were {}.", SafeArg.of("requestId", request.getRequestId()), SafeArg.of("acquireTimeoutMs", transactionConfig.get().getLockAcquireTimeoutMillis()), UnsafeArg.of("firstTenLockDescriptors", Iterables.limit(lockDescriptors, 10))); throw new TransactionLockAcquisitionTimeoutException("Timed out waiting for commits to complete."); } }
@Test public void waitForLocksDelegates() { WaitForLocksRequest request = WaitForLocksRequest.of(LOCKS, TIMEOUT); timelock.waitForLocks(request); verify(delegate).waitForLocks(request); verifyNoMoreInteractions(refresher); }
@Override public WaitForLocksResponse waitForLocks(WaitForLocksRequest request) { com.palantir.lock.LockRequest legacyRequest = toLegacyWaitForLocksRequest(request.getLockDescriptors()); // this blocks indefinitely, and can only fail if the connection fails (and throws an exception) lockAnonymous(legacyRequest); return WaitForLocksResponse.successful(); }
private void waitFor(Set<LockDescriptor> lockDescriptors) { WaitForLocksRequest request = WaitForLocksRequest.of(lockDescriptors, transactionConfig.get().getLockAcquireTimeoutMillis()); WaitForLocksResponse response = timelockService.waitForLocks(request); if (!response.wasSuccessful()) { log.error("Timed out waiting for commits to complete. Timeout was {} ms. First ten locks were {}.", SafeArg.of("requestId", request.getRequestId()), SafeArg.of("acquireTimeoutMs", transactionConfig.get().getLockAcquireTimeoutMillis()), UnsafeArg.of("firstTenLockDescriptors", Iterables.limit(lockDescriptors, 10))); throw new TransactionLockAcquisitionTimeoutException("Timed out waiting for commits to complete."); } }
@Test public void waitForLocksDelegatesToLockService() throws InterruptedException { com.palantir.lock.LockRequest legacyRequest = com.palantir.lock.LockRequest.builder(buildLockMap(LockMode.READ)).lockAndRelease().build(); when(lockService.lock(LockClient.ANONYMOUS.getClientId(), legacyRequest)).thenReturn(LOCK_REFRESH_TOKEN); timelock.waitForLocks(WaitForLocksRequest.of(ImmutableSet.of(LOCK_A, LOCK_B), TIMEOUT)); verify(lockService).lock(LockClient.ANONYMOUS.getClientId(), legacyRequest); }
static RequestInfo of(WaitForLocksRequest request) { return ImmutableRequestInfo.of( request.getRequestId(), request.getClientDescription().orElse(EMPTY_DESCRIPTION), request.getLockDescriptors()); } }
@Override public AsyncResult<Void> waitForLocks(WaitForLocksRequest request) { return lockService.waitForLocks( request.getRequestId(), request.getLockDescriptors(), TimeLimit.of(request.getAcquireTimeoutMs())); }