@Override public LockServerOptions getLockServerOptions() { LockServerOptions options = LockServerOptions.builder() .isStandaloneServer(isStandaloneServer) .maxAllowedLockTimeout(maxAllowedLockTimeout) .maxAllowedClockDrift(maxAllowedClockDrift) .randomBitCount(RANDOM_BIT_COUNT) .build(); if (log.isTraceEnabled()) { log.trace(".getLockServerOptions() returns {}", options); } return options; }
@Override public int hashCode() { return Objects.hashCode(isStandaloneServer(), getMaxAllowedLockTimeout(), getMaxAllowedClockDrift(), getMaxAllowedBlockingDuration(), getMaxNormalLockAge(), getRandomBitCount(), getLockStateLoggerDir(), slowLogTriggerMillis()); }
private LockServiceImpl(LockServerOptions options, Runnable callOnClose) { Preconditions.checkNotNull(options); this.callOnClose = callOnClose; isStandaloneServer = options.isStandaloneServer(); maxAllowedLockTimeout = SimpleTimeDuration.of(options.getMaxAllowedLockTimeout()); maxAllowedClockDrift = SimpleTimeDuration.of(options.getMaxAllowedClockDrift()); maxNormalLockAge = SimpleTimeDuration.of(options.getMaxNormalLockAge()); lockStateLoggerDir = options.getLockStateLoggerDir(); slowLogTriggerMillis = options.slowLogTriggerMillis(); executor.execute(() -> { Thread.currentThread().setName("Held Locks Token Reaper"); reapLocks(lockTokenReaperQueue, heldLocksTokenMap); }); executor.execute(() -> { Thread.currentThread().setName("Held Locks Grant Reaper"); reapLocks(lockGrantReaperQueue, heldLocksGrantMap); }); }
@Test public void testSerialisationAndDeserialisationOfLockServerOptions() throws Exception { LockServerOptions lockServerOptions = LockServerOptions.builder() .isStandaloneServer(false) .slowLogTriggerMillis(10L) .build(); ObjectMapper mapper = new ObjectMapper(); String serializedForm = mapper.writeValueAsString(lockServerOptions); LockServerOptions deserialzedlockServerOptions = mapper.readValue(serializedForm, LockServerOptions.class); assertEquals(lockServerOptions, deserialzedlockServerOptions); assertEquals(false, deserialzedlockServerOptions.isStandaloneServer()); assertEquals(10L, deserialzedlockServerOptions.slowLogTriggerMillis()); }
Assert.assertNull(token2); request2 = LockRequest.builder(ImmutableSortedMap.of(lock, LockMode.READ)) .blockForAtMost(server.getLockServerOptions().getMaxAllowedBlockingDuration()).build(); token2 = server.lockWithFullLockResponse(client2, request2).getToken(); Assert.assertNotNull(token2); server.getLockServerOptions().getMaxAllowedBlockingDuration().toSeconds() + 10, TimeUnit.SECONDS); request2 = LockRequest.builder(ImmutableSortedMap.of( lock, LockMode.READ)).blockForAtMost(beyondMaxDuration).build();
@Override public String toString() { return MoreObjects.toStringHelper(getClass().getSimpleName()) .add("isStandaloneServer", isStandaloneServer()) .add("maxAllowedLockTimeout", getMaxAllowedLockTimeout()) .add("maxAllowedClockDrift", getMaxAllowedClockDrift()) .add("maxAllowedBlockingDuration", getMaxAllowedBlockingDuration()) .add("maxNormalLockAge", getMaxNormalLockAge()) .add("randomBitCount", getRandomBitCount()) .add("lockStateLoggerDir", getLockStateLoggerDir()) .add("slowLogTriggerMillis", slowLogTriggerMillis()) .toString(); }
private CloseableLockService createTimeLimitedLockService(long slowLogTriggerMillis) { LockServerOptions lockServerOptions = LockServerOptions.builder() .slowLogTriggerMillis(slowLogTriggerMillis) .build(); LockServiceImpl rawLockService = LockServiceImpl.create(lockServerOptions); if (deprecated.useLockTimeLimiter()) { return BlockingTimeLimitedLockService.create( rawLockService, deprecated.blockingTimeoutInMs()); } return rawLockService; } }
@Override public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } if (!(obj instanceof LockServerOptions)) { return false; } LockServerOptions other = (LockServerOptions) obj; return Objects.equal(isStandaloneServer(), other.isStandaloneServer()) && Objects.equal(getMaxAllowedLockTimeout(), other.getMaxAllowedLockTimeout()) && Objects.equal(getMaxAllowedClockDrift(), other.getMaxAllowedClockDrift()) && Objects.equal(getMaxAllowedBlockingDuration(), other.getMaxAllowedBlockingDuration()) && Objects.equal(getMaxNormalLockAge(), other.getMaxNormalLockAge()) && Objects.equal(getRandomBitCount(), other.getRandomBitCount()) && Objects.equal(getLockStateLoggerDir(), other.getLockStateLoggerDir()) && Objects.equal(slowLogTriggerMillis(), other.slowLogTriggerMillis()); }
private static LockServiceImpl createLockServiceWithSlowLogEnabled(boolean isSlowLogEnabled) { return LockServiceImpl.create(LockServerOptions.builder() .isStandaloneServer(false) .slowLogTriggerMillis(isSlowLogEnabled ? SLOW_LOG_TRIGGER_MILLIS : 0) .build()); }
SerializationProxy(LockServerOptions lockServerOptions) { isStandaloneServer = lockServerOptions.isStandaloneServer(); maxAllowedLockTimeout = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedLockTimeout()); maxAllowedClockDrift = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedClockDrift()); maxAllowedBlockingDuration = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedBlockingDuration()); maxNormalLockAge = SimpleTimeDuration.of( lockServerOptions.getMaxNormalLockAge()); randomBitCount = lockServerOptions.getRandomBitCount(); lockStateLoggerDir = lockServerOptions.getLockStateLoggerDir(); slowLogTriggerMillis = lockServerOptions.slowLogTriggerMillis(); }
@BeforeClass public static void setupLockService() { if (lockService == null) { lockService = LockServiceImpl.create(LockServerOptions.builder().isStandaloneServer(false).build()); } }
@Override public int hashCode() { return Objects.hashCode(isStandaloneServer(), getMaxAllowedLockTimeout(), getMaxAllowedClockDrift(), getMaxAllowedBlockingDuration(), getMaxNormalLockAge(), getRandomBitCount(), getLockStateLoggerDir(), slowLogTriggerMillis()); }
@Override protected LockService getLockService() { return SerializingProxy.newProxyInstance(LockService.class, LockServiceImpl.create( LockServerOptions.builder() .isStandaloneServer(false) .lockStateLoggerDir(LockServiceTestUtils.TEST_LOG_STATE_DIR) .build())); } }
@Override public String toString() { return MoreObjects.toStringHelper(getClass().getSimpleName()) .add("isStandaloneServer", isStandaloneServer()) .add("maxAllowedLockTimeout", getMaxAllowedLockTimeout()) .add("maxAllowedClockDrift", getMaxAllowedClockDrift()) .add("maxAllowedBlockingDuration", getMaxAllowedBlockingDuration()) .add("maxNormalLockAge", getMaxNormalLockAge()) .add("randomBitCount", getRandomBitCount()) .add("lockStateLoggerDir", getLockStateLoggerDir()) .add("slowLogTriggerMillis", slowLogTriggerMillis()) .toString(); }
= TransactionServices.createForTesting(keyValueService, ts, false); LockService lock = LockRefreshingLockService.create(LockServiceImpl.create( LockServerOptions.builder().isStandaloneServer(false).build())); LockClient client = LockClient.of("in memory atlasdb instance"); ConflictDetectionManager conflictManager = ConflictDetectionManagers.createWithoutWarmingCache(keyValueService);
@Override public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } if (!(obj instanceof LockServerOptions)) { return false; } LockServerOptions other = (LockServerOptions) obj; return Objects.equal(isStandaloneServer(), other.isStandaloneServer()) && Objects.equal(getMaxAllowedLockTimeout(), other.getMaxAllowedLockTimeout()) && Objects.equal(getMaxAllowedClockDrift(), other.getMaxAllowedClockDrift()) && Objects.equal(getMaxAllowedBlockingDuration(), other.getMaxAllowedBlockingDuration()) && Objects.equal(getMaxNormalLockAge(), other.getMaxNormalLockAge()) && Objects.equal(getRandomBitCount(), other.getRandomBitCount()) && Objects.equal(getLockStateLoggerDir(), other.getLockStateLoggerDir()) && Objects.equal(slowLogTriggerMillis(), other.slowLogTriggerMillis()); }
(TimestampManagementService) timestampService, LockClient.of("test"), LockServiceImpl.create(LockServerOptions.builder().isStandaloneServer(false).build()), transactionService, () -> AtlasDbConstraintCheckingMode.NO_CONSTRAINT_CHECKING,
SerializationProxy(LockServerOptions lockServerOptions) { isStandaloneServer = lockServerOptions.isStandaloneServer(); maxAllowedLockTimeout = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedLockTimeout()); maxAllowedClockDrift = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedClockDrift()); maxAllowedBlockingDuration = SimpleTimeDuration.of( lockServerOptions.getMaxAllowedBlockingDuration()); maxNormalLockAge = SimpleTimeDuration.of( lockServerOptions.getMaxNormalLockAge()); randomBitCount = lockServerOptions.getRandomBitCount(); lockStateLoggerDir = lockServerOptions.getLockStateLoggerDir(); slowLogTriggerMillis = lockServerOptions.slowLogTriggerMillis(); }
@Before public void setUp() { server = LockRefreshingLockService.create(LockServiceImpl.create(LockServerOptions.builder() .isStandaloneServer(false) .build())); lock1 = StringLockDescriptor.of("lock1"); }
public static TransactionManager setupTxManager(KeyValueService kvs, TimestampService tsService, TimestampManagementService tsmService, SweepStrategyManager ssm, TransactionService txService) { MetricsManager metricsManager = MetricsManagers.createForTests(); LockClient lockClient = LockClient.of("sweep client"); LockService lockService = LockServiceImpl.create( LockServerOptions.builder().isStandaloneServer(false).build()); Supplier<AtlasDbConstraintCheckingMode> constraints = () -> AtlasDbConstraintCheckingMode.NO_CONSTRAINT_CHECKING; ConflictDetectionManager cdm = ConflictDetectionManagers.createWithoutWarmingCache(kvs); Cleaner cleaner = new NoOpCleaner(); MultiTableSweepQueueWriter writer = TargetedSweeper.createUninitializedForTest(() -> 1); TransactionManager txManager = SerializableTransactionManager.createForTest( metricsManager, kvs, tsService, tsmService, lockClient, lockService, txService, constraints, cdm, ssm, cleaner, AbstractTransactionTest.GET_RANGES_THREAD_POOL_SIZE, AbstractTransactionTest.DEFAULT_GET_RANGES_CONCURRENCY, writer); setupTables(kvs); writer.initialize(txManager); return txManager; }