@Override public LockRefreshToken lock(String client, LockRequest request) throws InterruptedException { return delegate().lock(client, request); }
@Override public Set<LockRefreshToken> refreshLockRefreshTokens(Iterable<LockRefreshToken> tokens) { return delegate().refreshLockRefreshTokens(tokens); }
@Override public void close() { if (token != null) { lockService.unlock(token); } }
public void lockOrRefresh() throws InterruptedException { if (token != null) { Set<LockRefreshToken> refreshedTokens = lockService.refreshLockRefreshTokens(ImmutableList.of(token)); log.info("Refreshed an existing lock token for {} in a single lock service (token {}); got {}", getLockIdLoggingArg(), SafeArg.of("existingLockToken", token), SafeArg.of("refreshedTokens", refreshedTokens)); if (refreshedTokens.isEmpty()) { token = null; } } else { LockDescriptor lock = StringLockDescriptor.of(lockId); LockRequest request = LockRequest.builder( ImmutableSortedMap.of(lock, LockMode.WRITE)).doNotBlock().build(); token = lockService.lock(LockClient.ANONYMOUS.getClientId(), request); log.info("Attempted to acquire the lock {} in a single lock service; got {}", getLockIdLoggingArg(), SafeArg.of("acquiredToken", token)); } }
@Override public void logCurrentState() { delegate().logCurrentState(); }
@Override public HeldLocksToken lockAndGetHeldLocks(String client, LockRequest request) throws InterruptedException { return delegate().lockAndGetHeldLocks(client, request); }
@Override public Long getMinLockedInVersionId(String client) { return delegate().getMinLockedInVersionId(client); }
@Override public long currentTimeMillis() { return delegate().currentTimeMillis(); }
public void lockOrRefresh() throws InterruptedException { if (token != null) { Set<LockRefreshToken> refreshedTokens = lockService.refreshLockRefreshTokens(ImmutableList.of(token)); log.info("Refreshed an existing lock token for {} in a single lock service (token {}); got {}", getLockIdLoggingArg(), SafeArg.of("existingLockToken", token), SafeArg.of("refreshedTokens", refreshedTokens)); if (refreshedTokens.isEmpty()) { token = null; } } else { LockDescriptor lock = StringLockDescriptor.of(lockId); LockRequest request = LockRequest.builder( ImmutableSortedMap.of(lock, LockMode.WRITE)).doNotBlock().build(); token = lockService.lock(LockClient.ANONYMOUS.getClientId(), request); log.info("Attempted to acquire the lock {} in a single lock service; got {}", getLockIdLoggingArg(), SafeArg.of("acquiredToken", token)); } }
@Override public void logCurrentState() { delegate().logCurrentState(); }
@Override public HeldLocksToken lockAndGetHeldLocks(String client, LockRequest request) throws InterruptedException { return delegate().lockAndGetHeldLocks(client, request); }
@Override public Long getMinLockedInVersionId(String client) { return delegate().getMinLockedInVersionId(client); }
@Override public long currentTimeMillis() { return delegate().currentTimeMillis(); }
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); } else { return nonBlockingClient.lock(client.getClientId(), request); response = nonBlockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); } else { response = nonBlockingClient.lock(client.getClientId(), request); return blockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); } else { return blockingClient.lock(client.getClientId(), request);
@Override public boolean unlock(LockRefreshToken token) { return delegate().unlock(token); }
private void refreshLocks() { ImmutableSet<LockRefreshToken> refreshCopy = ImmutableSet.copyOf(toRefresh); if (refreshCopy.isEmpty()) { return; } Set<LockRefreshToken> refreshedTokens = delegate().refreshLockRefreshTokens(refreshCopy); for (LockRefreshToken token : refreshCopy) { if (!refreshedTokens.contains(token) && toRefresh.contains(token)) { log.warn("failed to refresh lock: {}", token); toRefresh.remove(token); } } }
@Override public LockRefreshToken lock(String client, LockRequest request) throws InterruptedException { return delegate().lock(client, request); }
@Override public void close() { if (token != null) { lockService.unlock(token); } }
@Override public Set<LockRefreshToken> refreshLockRefreshTokens(Iterable<LockRefreshToken> tokens) { return delegate().refreshLockRefreshTokens(tokens); }
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); } else { return nonBlockingClient.lock(client.getClientId(), request); response = nonBlockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); } else { response = nonBlockingClient.lock(client.getClientId(), request); return blockingClient.lock(LockClient.ANONYMOUS.getClientId(), request); } else { return blockingClient.lock(client.getClientId(), request);