public LockRefreshToken asLockRefreshToken() { return new LockRefreshToken(tokenId, 0L); }
public static SimpleHeldLocksToken fromLockRefreshToken(LockRefreshToken token) { return new SimpleHeldLocksToken(token.getTokenId(), 0L); }
@Override public Set<HeldLocksToken> refreshTokens(Iterable<HeldLocksToken> tokens) { Set<LockRefreshToken> refreshTokens = ImmutableSet.copyOf( Iterables.transform(tokens, HeldLocksTokens.getRefreshTokenFun())); Set<LockRefreshToken> goodTokens = delegate().refreshLockRefreshTokens(refreshTokens); Set<HeldLocksToken> ret = Sets.newHashSetWithExpectedSize(refreshTokens.size()); Map<LockRefreshToken, HeldLocksToken> tokenMap = Maps.uniqueIndex(tokens, HeldLocksTokens.getRefreshTokenFun()); for (LockRefreshToken goodToken : goodTokens) { HeldLocksToken lock = tokenMap.get(goodToken); ret.add(goodToken.refreshTokenWithExpriationDate(lock)); } return ret; }
@JsonIgnore public LockRefreshToken getLockRefreshToken() { return new LockRefreshToken(tokenId, expirationDateMs); }
static LockToken toTokenV2(LockRefreshToken legacyToken) { return LockToken.of(toUuid(legacyToken.getTokenId())); }
@Override public Set<HeldLocksToken> refreshTokens(Iterable<HeldLocksToken> tokens) { Set<LockRefreshToken> refreshTokens = ImmutableSet.copyOf( Iterables.transform(tokens, HeldLocksTokens.getRefreshTokenFun())); Set<LockRefreshToken> goodTokens = delegate().refreshLockRefreshTokens(refreshTokens); Set<HeldLocksToken> ret = Sets.newHashSetWithExpectedSize(refreshTokens.size()); Map<LockRefreshToken, HeldLocksToken> tokenMap = Maps.uniqueIndex(tokens, HeldLocksTokens.getRefreshTokenFun()); for (LockRefreshToken goodToken : goodTokens) { HeldLocksToken lock = tokenMap.get(goodToken); ret.add(goodToken.refreshTokenWithExpriationDate(lock)); } return ret; }
static LockRefreshToken toLegacyToken(LockToken tokenV2) { return new LockRefreshToken(toBigInteger(tokenV2.getRequestId()), Long.MIN_VALUE); }
@Override public Set<LockRefreshToken> refreshLockRefreshTokens(Iterable<LockRefreshToken> tokens) { List<HeldLocksToken> fakeTokens = Lists.newArrayList(); LockDescriptor fakeLockDesc = StringLockDescriptor.of("refreshLockRefreshTokens"); SortedLockCollection<LockDescriptor> fakeLockSet = LockCollections.of(ImmutableSortedMap.of(fakeLockDesc, LockMode.READ)); for (LockRefreshToken token : tokens) { fakeTokens.add(new HeldLocksToken( token.getTokenId(), LockClient.ANONYMOUS, 0L, 0L, fakeLockSet, maxAllowedLockTimeout, 0L, "UnknownThread-refreshLockRefreshTokens")); } return ImmutableSet.copyOf(Iterables.transform(refreshTokens(fakeTokens), HeldLocksTokens.getRefreshTokenFun())); }
@Before public void setup() throws InterruptedException { lockService = mock(LockService.class); LockRefreshToken token = new LockRefreshToken(BigInteger.ONE, Long.MAX_VALUE); when(lockService.lock(anyString(), any())).thenReturn(token); calculator = mock(StreamStoreRemappingSweepPriorityCalculator.class); priorities = new HashMap<>(); priorityTables = new HashSet<>(); blacklistTables = new HashSet<>(); provider = new NextTableToSweepProvider(lockService, calculator); }
public static SimpleHeldLocksToken fromLockRefreshToken(LockRefreshToken token) { return new SimpleHeldLocksToken(token.getTokenId(), 0L); }
@Test public void throwsIfBigIntegerHasMoreThan127Bits() { BigInteger bigInt = BigInteger.valueOf(2).pow(127); LockRefreshToken token = new LockRefreshToken(bigInt, 0L); assertThatThrownBy(() -> LockTokenConverter.toTokenV2(token)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("too many bits"); }
@Test public void lockOrRefreshCallsRefreshWhenTokenPresent() throws InterruptedException { LockRefreshToken token = new LockRefreshToken(BigInteger.ONE, 10000000000L); when(mockLockService.lock(anyString(), any())).thenReturn(token); lockService.lockOrRefresh(); verify(mockLockService, atLeastOnce()).lock(any(), any()); lockService.lockOrRefresh(); verify(mockLockService, atLeastOnce()).refreshLockRefreshTokens(ImmutableList.of(token)); verifyNoMoreInteractions(mockLockService); }
@Test public void closeUnlocksToken() throws InterruptedException { LockRefreshToken token = new LockRefreshToken(BigInteger.ONE, 10000000000L); when(mockLockService.lock(anyString(), any())).thenReturn(token); lockService.lockOrRefresh(); lockService.close(); verify(mockLockService, atLeastOnce()).unlock(token); } }
@Test public void lockClearedWhenRefreshReturnsEmpty() throws InterruptedException { when(mockLockService.lock(anyString(), any())).thenReturn(new LockRefreshToken(BigInteger.ONE, 10000000000L)); lockService.lockOrRefresh(); when(mockLockService.refreshLockRefreshTokens(any())).thenReturn(ImmutableSet.of()); lockService.lockOrRefresh(); assertFalse(lockService.haveLocks()); }
@Test public void lockStoredInToken() throws InterruptedException { when(mockLockService.lock(anyString(), any())).thenReturn(new LockRefreshToken(BigInteger.ONE, 10000000000L)); lockService.lockOrRefresh(); assertTrue(lockService.haveLocks()); }
@Test public void registersMetrics() throws InterruptedException { when(closeableLockService.lock(any(), any())).thenReturn(new LockRefreshToken(BigInteger.ONE, Long.MAX_VALUE)); snapshotTransactionManager.runTaskWithRetry(tx -> 42); MetricRegistry registry = snapshotTransactionManager.metricsManager.getRegistry(); assertThat(registry.getNames()) .contains(SETUP_TASK_METRIC_NAME) .contains(FINISH_TASK_METRIC_NAME); assertThat(registry.getTimers().get(SETUP_TASK_METRIC_NAME).getCount()).isGreaterThanOrEqualTo(1); assertThat(registry.getTimers().get(FINISH_TASK_METRIC_NAME).getCount()).isGreaterThanOrEqualTo(1); }
private LockRefreshToken mockImmutableTsLockResponse() throws InterruptedException { LockDescriptor descriptor = AtlasTimestampLockDescriptor.of(FRESH_TIMESTAMP); com.palantir.lock.LockRequest expectedRequest = com.palantir.lock.LockRequest.builder(ImmutableSortedMap.of(descriptor, LockMode.READ)) .withLockedInVersionId(FRESH_TIMESTAMP).build(); LockRefreshToken expectedToken = new LockRefreshToken(BigInteger.ONE, 123L); when(lockService.lock(LOCK_CLIENT.getClientId(), expectedRequest)).thenReturn(expectedToken); return expectedToken; }
public LockRefreshToken asLockRefreshToken() { return new LockRefreshToken(tokenId, 0L); }
@JsonIgnore public LockRefreshToken getLockRefreshToken() { return new LockRefreshToken(tokenId, expirationDateMs); }