Search in sources :

Example 11 with Lease

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);
}
Also used : Lease(com.palantir.lock.v2.Lease) UnsuccessfulLockResponse(com.palantir.atlasdb.timelock.api.UnsuccessfulLockResponse) SuccessfulLockResponse(com.palantir.atlasdb.timelock.api.SuccessfulLockResponse) ConjureLockResponse(com.palantir.atlasdb.timelock.api.ConjureLockResponse) LockResponse(com.palantir.lock.v2.LockResponse) Test(org.junit.Test)

Example 12 with 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;
}
Also used : LockImmutableTimestampResponse(com.palantir.lock.v2.LockImmutableTimestampResponse) StartTransactionResponseV4(com.palantir.lock.v2.StartTransactionResponseV4) GetCommitTimestampsRequest(com.palantir.atlasdb.timelock.api.GetCommitTimestampsRequest) ConjureRefreshLocksResponse(com.palantir.atlasdb.timelock.api.ConjureRefreshLocksResponse) ConjureStartTransactionsResponse(com.palantir.atlasdb.timelock.api.ConjureStartTransactionsResponse) ConjureStartTransactionsRequest(com.palantir.atlasdb.timelock.api.ConjureStartTransactionsRequest) LeaderTime(com.palantir.lock.v2.LeaderTime) WaitForLocksResponse(com.palantir.lock.v2.WaitForLocksResponse) GetCommitTimestampsResponse(com.palantir.atlasdb.timelock.api.GetCommitTimestampsResponse) Lease(com.palantir.lock.v2.Lease) LockResponse(com.palantir.lock.v2.LockResponse) ConjureLockToken(com.palantir.atlasdb.timelock.api.ConjureLockToken) LockToken(com.palantir.lock.v2.LockToken) LockWatchVersion(com.palantir.lock.watch.LockWatchVersion) Set(java.util.Set) ConjureUnlockRequest(com.palantir.atlasdb.timelock.api.ConjureUnlockRequest) ConjureRefreshLocksRequest(com.palantir.atlasdb.timelock.api.ConjureRefreshLocksRequest) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) LockRequest(com.palantir.lock.v2.LockRequest) Optional(java.util.Optional) VisibleForTesting(com.google.common.annotations.VisibleForTesting) WaitForLocksRequest(com.palantir.lock.v2.WaitForLocksRequest) Preconditions(com.palantir.logsafe.Preconditions) Lease(com.palantir.lock.v2.Lease) ConjureRefreshLocksResponse(com.palantir.atlasdb.timelock.api.ConjureRefreshLocksResponse)

Example 13 with Lease

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();
}
Also used : Lease(com.palantir.lock.v2.Lease) Test(org.junit.Test)

Example 14 with Lease

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);
}
Also used : Lease(com.palantir.lock.v2.Lease) Test(org.junit.Test)

Example 15 with Lease

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());
}
Also used : Lease(io.fabric8.kubernetes.api.model.coordination.v1.Lease) LeaseSpec(io.fabric8.kubernetes.api.model.coordination.v1.LeaseSpec) Test(org.junit.jupiter.api.Test)

Aggregations

Lease (com.palantir.lock.v2.Lease)12 Test (org.junit.Test)9 StartTransactionResponseV4 (com.palantir.lock.v2.StartTransactionResponseV4)4 ConjureStartTransactionsRequest (com.palantir.atlasdb.timelock.api.ConjureStartTransactionsRequest)3 LockResponse (com.palantir.lock.v2.LockResponse)3 Lease (io.fabric8.kubernetes.api.model.coordination.v1.Lease)3 ConjureStartTransactionsResponse (com.palantir.atlasdb.timelock.api.ConjureStartTransactionsResponse)2 LeaderTime (com.palantir.lock.v2.LeaderTime)2 LockImmutableTimestampResponse (com.palantir.lock.v2.LockImmutableTimestampResponse)2 LockToken (com.palantir.lock.v2.LockToken)2 WaitForLocksRequest (com.palantir.lock.v2.WaitForLocksRequest)2 Optional (java.util.Optional)2 Set (java.util.Set)2 UUID (java.util.UUID)2 Test (org.junit.jupiter.api.Test)2 VisibleForTesting (com.google.common.annotations.VisibleForTesting)1 Sets (com.google.common.collect.Sets)1 FutureCallback (com.google.common.util.concurrent.FutureCallback)1 Futures (com.google.common.util.concurrent.Futures)1 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)1