HeldLocksGrant grant = createHeldLocksGrant(heldLocks.realToken.getLockDescriptors(), heldLocks.locks, heldLocks.realToken.getLockTimeout(), heldLocks.realToken.getVersionId());
@Test public void noRetryOnExpiredLockTokens() throws InterruptedException { HeldLocksToken expiredLockToken = getExpiredHeldLocksToken(); try { txManager.runTaskWithLocksWithRetry(ImmutableList.of(expiredLockToken), () -> null, (tx, locks) -> { tx.put(TABLE, ImmutableMap.of(TEST_CELL, PtBytes.toBytes("value"))); return null; }); fail(); } catch (TransactionLockTimeoutNonRetriableException e) { LockDescriptor descriptor = Iterables.getFirst(expiredLockToken.getLockDescriptors(), null); assertThat(e.getMessage(), containsString(descriptor.toString())); assertThat(e.getMessage(), containsString("Retry is not possible.")); } }
/** Convert a write lock to a read lock */ @Test public void testConvertWriteToRead() throws Exception { final LockRequest request1 = LockRequest.builder(ImmutableSortedMap.of(lock1, LockMode.WRITE)) .build(); final LockRequest request2 = LockRequest.builder(ImmutableSortedMap.of(lock1, LockMode.READ)) .build(); HeldLocksToken token1 = server.lockWithFullLockResponse(client, request1).getToken(); Assert.assertNotNull(token1); Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(request1.getLockDescriptors(), token1.getLockDescriptors()); Future<?> future = executor.submit((Callable<Void>) () -> { barrier.await(); HeldLocksToken validToken = server.lockWithFullLockResponse(LockClient.ANONYMOUS, request2).getToken(); Assert.assertNotNull(validToken); Assert.assertEquals(LockClient.ANONYMOUS, validToken.getClient()); Assert.assertEquals(request2.getLockDescriptors(), validToken.getLockDescriptors()); Assert.assertTrue(server.unlock(validToken)); return null; }); barrier.await(); Thread.sleep(50); HeldLocksToken token2 = server.lockWithFullLockResponse(client, request2).getToken(); Assert.assertNotNull(token2); Assert.assertEquals(client, token2.getClient()); Assert.assertEquals(request2.getLockDescriptors(), token2.getLockDescriptors()); Assert.assertTrue(server.unlock(token1)); future.get(); Assert.assertTrue(server.unlock(token2)); Assert.assertTrue(server.getTokens(client).isEmpty()); }
Assert.assertNotNull(token); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); server.unlock(token);
Assert.assertNotNull(token1); Assert.assertEquals(LockClient.ANONYMOUS, token1.getClient()); Assert.assertEquals(request1.getLockDescriptors(), token1.getLockDescriptors()); Assert.assertTrue(currentTimeMs + lockTimeoutMs <= token1.getExpirationDateMs()); Assert.assertTrue(token1.getExpirationDateMs()
Assert.assertNotNull(token); Assert.assertEquals(client, token.getClient()); Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); Thread.sleep(51); Assert.assertTrue(token.getExpirationDateMs() - System.currentTimeMillis() < 450); Assert.assertNotNull(token); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); Assert.assertNotNull(token); Assert.assertEquals(client, token.getClient()); Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); server.unlock(token); Assert.assertTrue(server.getTokens(client).isEmpty());
Assert.assertNotNull(readWriteToken); Assert.assertEquals(client, readWriteToken.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.copyOf(lockMap)), readWriteToken.getLockDescriptors()); Assert.assertNotNull(token); Assert.assertEquals(client, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.copyOf(lockMap)), token.getLockDescriptors()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.copyOf(lockMap)), token.getLockDescriptors()); server.unlock(token); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.copyOf(lockMap)), token.getLockDescriptors()); server.unlock(token);
Assert.assertNotNull(token1); Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(request1.getLockDescriptors(), token1.getLockDescriptors()); Assert.assertNotNull(token2); Assert.assertEquals(LockClient.ANONYMOUS, token2.getClient()); Assert.assertEquals(request2.getLockDescriptors(), token2.getLockDescriptors()); Assert.assertNotNull(token3); Assert.assertEquals(client, token3.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock1, LockMode.READ)), token3.getLockDescriptors());
Assert.assertNotNull(token1); Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(request.getLockDescriptors(), token1.getLockDescriptors()); Assert.assertTrue(currentTimeMs + lockTimeoutMs <= token1.getExpirationDateMs()); Assert.assertTrue(token1.getExpirationDateMs()
numSuccess.set(numSuccess.get() + 1); Assert.assertEquals(Integer.toString(clientID), token.getClient().getClientId()); Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); try { Thread.sleep(50);
Assert.assertNotNull(token); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock1, LockMode.WRITE)), token.getLockDescriptors()); try { server.unlockAndFreeze(token); Assert.assertNotNull(token2); Assert.assertEquals(client, token2.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock1, LockMode.WRITE)), token2.getLockDescriptors()); server.unlockAndFreeze(token2); token2 = server.lockWithFullLockResponse(client, request).getToken();
Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(10, (long) token1.getVersionId()); Assert.assertEquals(request.getLockDescriptors(), token1.getLockDescriptors()); Assert.assertTrue(currentTimeMs + lockTimeoutMs <= token1.getExpirationDateMs()); Assert.assertTrue(token1.getExpirationDateMs()
Assert.assertNotNull(token1); Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(request.getLockDescriptors(), token1.getLockDescriptors()); Assert.assertTrue(currentTimeMs + lockTimeoutMs <= token1.getExpirationDateMs()); Assert.assertTrue(token1.getExpirationDateMs()
HeldLocksToken token = response.getToken(); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock1, LockMode.READ)), token.getLockDescriptors()); token = response.getToken(); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock2, LockMode.READ)), token.getLockDescriptors()); token = response.getToken(); Assert.assertEquals(LockClient.ANONYMOUS, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock1, LockMode.READ, lock2, LockMode.READ)), token.getLockDescriptors());
HeldLocksToken token = server.lockWithFullLockResponse(client, request).getToken(); Assert.assertEquals(client, token.getClient()); Assert.assertEquals(LockCollections.of(ImmutableSortedMap.of(lock, LockMode.READ)), token.getLockDescriptors());