static RequestInfo of(LockRequest request) { return ImmutableRequestInfo.of( request.getRequestId(), request.getClientDescription().orElse(EMPTY_DESCRIPTION), request.getLockDescriptors()); }
@Override public AsyncResult<LockToken> lock(LockRequest request) { return lockService.lock( request.getRequestId(), request.getLockDescriptors(), TimeLimit.of(request.getAcquireTimeoutMs())); }
/** * Creates a mock of a LockService that only gives out a lock once per unique request and never releases it, even * if unlock is called. The returned tokens are monotonically increasing in the tokenId. */ private TimelockService createStickyLockService() { AtomicLong lockToken = new AtomicLong(0); Set<LockDescriptor> requestedLocks = new ConcurrentHashSet<>(); TimelockService stickyLockService = mock(TimelockService.class); doAnswer(invocation -> { LockRequest request = invocation.getArgument(0); if (requestedLocks.add(Iterables.getOnlyElement(request.getLockDescriptors()))) { return (LockResponse) () -> Optional.of(LockToken.of(new UUID(lockToken.getAndIncrement(), 0L))); } else { return (LockResponse) Optional::empty; } }).when(stickyLockService).lock(any()); return stickyLockService; }
private com.palantir.lock.LockRequest toLegacyLockRequest(LockRequest request) { SortedMap<LockDescriptor, LockMode> locks = buildLockMap(request.getLockDescriptors(), LockMode.WRITE); return com.palantir.lock.LockRequest.builder(locks) .blockForAtMost(SimpleTimeDuration.of(request.getAcquireTimeoutMs(), TimeUnit.MILLISECONDS)) .build(); }
static RequestInfo of(LockRequest request) { return ImmutableRequestInfo.of( request.getRequestId(), request.getClientDescription().orElse(EMPTY_DESCRIPTION), request.getLockDescriptors()); }
@Override public AsyncResult<LockToken> lock(LockRequest request) { return lockService.lock( request.getRequestId(), request.getLockDescriptors(), TimeLimit.of(request.getAcquireTimeoutMs())); }