use of com.palantir.lock.v2.Lease in project atlasdb by palantir.
the class LockLeaseServiceTest method lockResponseHasCorrectLeasedLock.
@Test
public void lockResponseHasCorrectLeasedLock() {
Lease lease = getLease();
when(timelock.lock(any())).thenReturn(ConjureLockResponse.successful(SuccessfulLockResponse.of(LOCK_TOKEN, lease)));
LockResponse clientResponse = lockLeaseService.lock(lockRequest);
verify(timelock).lock(any());
LeasedLockToken leasedLockToken = (LeasedLockToken) clientResponse.getToken();
assertThat(leasedLockToken.serverToken()).isEqualTo(LOCK_TOKEN);
assertThat(leasedLockToken.getLease()).isEqualTo(lease);
}
use of com.palantir.lock.v2.Lease in project atlasdb by palantir.
the class LockLeaseService method refreshTokens.
private Set<LeasedLockToken> refreshTokens(Set<LeasedLockToken> leasedTokens) {
if (leasedTokens.isEmpty()) {
return leasedTokens;
}
ConjureRefreshLocksResponse refreshLockResponse = delegate.refreshLocks(ConjureRefreshLocksRequest.of(serverTokens(leasedTokens)));
Lease lease = refreshLockResponse.getLease();
Set<LeasedLockToken> refreshedTokens = leasedTokens.stream().filter(t -> refreshLockResponse.getRefreshedTokens().contains(t.serverToken())).collect(Collectors.toSet());
refreshedTokens.forEach(t -> t.updateLease(lease));
return refreshedTokens;
}
use of com.palantir.lock.v2.Lease in project atlasdb by palantir.
the class HeldLocksCollectionTest method lockLeasesAreInvalidAfterExpiry.
@Test
public void lockLeasesAreInvalidAfterExpiry() {
setTime(123);
AsyncResult<HeldLocks> result = new AsyncResult<>();
AsyncResult<Leased<LockToken>> asyncResult = heldLocksCollection.getExistingOrAcquire(REQUEST_ID, () -> result);
result.complete(heldLocksForId(REQUEST_ID));
Lease lease = asyncResult.get().lease();
advance(LockLeaseContract.CLIENT_LEASE_TIMEOUT);
assertThat(lease.isValid(leaderClock.time())).isFalse();
}
use of com.palantir.lock.v2.Lease in project atlasdb by palantir.
the class HeldLocksCollectionTest method lockWatchingServiceIsUpdatedAfterLockIsCreatedAndReaped.
@Test
public void lockWatchingServiceIsUpdatedAfterLockIsCreatedAndReaped() {
setTime(123);
AsyncResult<HeldLocks> result = new AsyncResult<>();
AsyncResult<Leased<LockToken>> asyncResult = heldLocksCollection.getExistingOrAcquire(REQUEST_ID, () -> result);
result.complete(heldLocksForId(REQUEST_ID));
verify(lockWatcher).registerLock(ImmutableSet.of(LOCK_DESCRIPTOR), result.get().getToken());
Lease lease = asyncResult.get().lease();
advance(LockLeaseContract.SERVER_LEASE_TIMEOUT.plus(Duration.ofNanos(1)));
assertThat(lease.isValid(leaderClock.time())).isFalse();
assertUnlocked(REQUEST_ID);
verify(lockWatcher).registerUnlock(ImmutableSet.of(LOCK_DESCRIPTOR));
verifyNoMoreInteractions(lockWatcher);
}
use of com.palantir.lock.v2.Lease in project kubernetes-client by fabric8io.
the class LeaseLockTest method updateWithValidLeaderElectionRecordShouldSendPutRequest.
@Test
void updateWithValidLeaderElectionRecordShouldSendPutRequest() throws Exception {
// Given
final Resource<Lease> leaseResource = leases.withName("name");
final ReplaceDeletable<Lease> replaceable = mock(ReplaceDeletable.class, Answers.RETURNS_DEEP_STUBS);
when(leaseResource.lockResourceVersion(any())).thenReturn(replaceable);
final Lease leaseInTheCluster = new Lease();
leaseInTheCluster.setSpec(new LeaseSpec());
when(leaseResource.get()).thenReturn(leaseInTheCluster);
final LeaderElectionRecord record = new LeaderElectionRecord("1337", Duration.ofSeconds(1), ZonedDateTime.now(), ZonedDateTime.now(), 0);
record.setVersion("313373");
final LeaseLock lock = new LeaseLock("namespace", "name", "1337");
// When
lock.update(kc, record);
// Then
verify(replaceable, times(1)).replace(eq(leaseInTheCluster));
assertEquals("1337", leaseInTheCluster.getSpec().getHolderIdentity());
}
Aggregations