use of com.palantir.atlasdb.keyvalue.api.CheckAndSetException in project atlasdb by palantir.
the class PersistentLockManagerTest method whenWeGetTheLockFirstTimeAndThenHoldItForever.
private void whenWeGetTheLockFirstTimeAndThenHoldItForever() {
LockEntry oldEntry = ImmutableLockEntry.builder().lockName("BackupLock").instanceId(FIRST_LOCK_ID.value()).reason("Sweep").build();
CheckAndSetException casException = new CheckAndSetException(Cell.create(PtBytes.toBytes("unu"), PtBytes.toBytes("sed")), TableReference.createFromFullyQualifiedName("unu.sed"), PtBytes.toBytes("unused"), ImmutableList.of(oldEntry.value()));
when(mockPls.acquireBackupLock(anyString())).thenReturn(FIRST_LOCK_ID).thenThrow(casException);
}
use of com.palantir.atlasdb.keyvalue.api.CheckAndSetException in project atlasdb by palantir.
the class PersistentLockManagerTest method cannotAcquireAfterReleaseSeemsToFailButSecretlySucceedsAndThenSomeoneElseTakesTheLock.
@Test
@GuardedBy("manager")
public void cannotAcquireAfterReleaseSeemsToFailButSecretlySucceedsAndThenSomeoneElseTakesTheLock() {
doThrow(RuntimeException.class).when(mockPls).releaseBackupLock(any());
manager.acquirePersistentLockWithRetry();
try {
manager.releasePersistentLock();
} catch (RuntimeException e) {
// Expected
}
LockEntry usurper = ImmutableLockEntry.builder().lockName("BackupLock").instanceId(UUID.randomUUID()).reason("backup").build();
CheckAndSetException casException = new CheckAndSetException(Cell.create(PtBytes.toBytes("unu"), PtBytes.toBytes("sed")), TableReference.createFromFullyQualifiedName("unu.sed"), PtBytes.toBytes("unused"), ImmutableList.of(usurper.value()));
when(mockPls.acquireBackupLock(anyString())).thenThrow(casException);
// We call the non-retrying version here, because we:
// (a) don't want the test to hang
// (b) want to verify that we adjusted our view of the lockId.
manager.tryAcquirePersistentLock();
verify(mockPls, times(2)).acquireBackupLock("Sweep");
assertNull(manager.lockId);
}
use of com.palantir.atlasdb.keyvalue.api.CheckAndSetException in project atlasdb by palantir.
the class AbstractKeyValueServiceTest method testCheckAndSetFromWrongValue.
@Test(expected = CheckAndSetException.class)
public void testCheckAndSetFromWrongValue() {
Assume.assumeTrue(checkAndSetSupported());
CheckAndSetRequest request = CheckAndSetRequest.newCell(TEST_TABLE, TEST_CELL, value00);
keyValueService.checkAndSet(request);
try {
CheckAndSetRequest secondRequest = CheckAndSetRequest.singleCell(TEST_TABLE, TEST_CELL, value01, value00);
keyValueService.checkAndSet(secondRequest);
} catch (CheckAndSetException ex) {
assertThat(ex.getActualValues(), contains(value00));
throw ex;
}
}
Aggregations