metricsManager, kvs, lts.timelock(), lts.timestampManagement(), lts.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS),
@Provides @Singleton public TimestampService provideTimestampService(TransactionManagers.LockAndTimestampServices lts) { return lts.timestamp(); }
@VisibleForTesting static boolean timeLockMigrationCompleteIfNeeded(LockAndTimestampServices lockAndTimestampServices) { return lockAndTimestampServices.migrator().map(AsyncInitializer::isInitialized).orElse(true); }
atlasFactory.getTimestampStoreInvalidator(), userAgent()); adapter.setTimestampService(lockAndTimestampServices.timestamp()); KeyValueService kvs = atlasFactory.getKeyValueService(); kvs = ProfilingKeyValueService.create(kvs); kvs = new SafeTableClearerKeyValueService(lockAndTimestampServices.timelock()::getImmutableTimestamp, kvs); new TimelockTimestampServiceAdapter(lockAndTimestampServices.timelock()), Suppliers.compose(SweepConfig::writeThreshold, sweepConfig::get), Suppliers.compose(SweepConfig::writeSizeThreshold, sweepConfig::get) new DefaultCleanerBuilder(keyValueService, lockAndTimestampServices.timelock(), ImmutableList.of(follower), transactionService) .setBackgroundScrubAggressively(config().backgroundScrubAggressively()) metricsManager, keyValueService, lockAndTimestampServices.timelock(), lockAndTimestampServices.timestampManagement(), lockAndTimestampServices.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS), AtlasDbMetrics.instrument(metricsManager.getRegistry(), TransactionManager.class, transactionManager); instrumentedTransactionManager.registerClosingCallback(lockAndTimestampServices.close()); instrumentedTransactionManager.registerClosingCallback(targetedSweep::close);
invalidator, userAgent); TimeLockClient timeLockClient = TimeLockClient.withSynchronousUnlocker(lockAndTimestampServices.timelock()); return ImmutableLockAndTimestampServices.builder() .from(lockAndTimestampServices) .timelock(timeLockClient) .lock(LockRefreshingLockService.create(lockAndTimestampServices.lock())) .close(timeLockClient::close) .build();
metricsManager, kvs, lts.timelock(), lts.timestampManagement(), lts.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS),
metricsManager, kvs, lts.timelock(), lts.timestampManagement(), lts.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS),
private static Callback<TransactionManager> timelockConsistencyCheckCallback( AtlasDbConfig atlasDbConfig, AtlasDbRuntimeConfig initialRuntimeConfig, LockAndTimestampServices lockAndTimestampServices) { if (isUsingTimeLock(atlasDbConfig, initialRuntimeConfig)) { // Only do the consistency check if we're using TimeLock. // This avoids a bootstrapping problem with leader-block services without async initialisation, // where you need a working timestamp service to check consistency, you need to check consistency // before you can return a TM, you need to return a TM to listen on ports, and you need to listen on // ports in order to get a working timestamp service. return ConsistencyCheckRunner.create( ImmutableTimestampCorroborationConsistencyCheck.builder() .conservativeBound(TransactionManager::getUnreadableTimestamp) .freshTimestampSource(unused -> lockAndTimestampServices.timelock().getFreshTimestamp()) .build()); } return Callback.noOp(); }
private Optional<BackgroundCompactor> initializeCompactBackgroundProcess( MetricsManager metricsManager, LockAndTimestampServices lockAndTimestampServices, KeyValueService keyValueService, TransactionManager transactionManager, Supplier<CompactorConfig> compactorConfigSupplier) { Optional<BackgroundCompactor> backgroundCompactorOptional = BackgroundCompactor.createAndRun( metricsManager, transactionManager, keyValueService, lockAndTimestampServices.lock(), compactorConfigSupplier); backgroundCompactorOptional.ifPresent(backgroundCompactor -> transactionManager.registerClosingCallback(backgroundCompactor::close)); return backgroundCompactorOptional; }
private CoordinationService<InternalSchemaMetadata> getSchemaMetadataCoordinationService( MetricsManager metricsManager, LockAndTimestampServices lockAndTimestampServices, KeyValueService keyValueService) { @SuppressWarnings("unchecked") // Coordination service clearly has this type. CoordinationService<InternalSchemaMetadata> metadataCoordinationService = AtlasDbMetrics.instrument( metricsManager.getRegistry(), CoordinationService.class, CoordinationServices.createDefault( keyValueService, lockAndTimestampServices.timestamp(), config().initializeAsync())); MetadataCoordinationServiceMetrics.registerMetrics(metricsManager, metadataCoordinationService); return metadataCoordinationService; }
@VisibleForTesting static boolean timeLockMigrationCompleteIfNeeded(LockAndTimestampServices lockAndTimestampServices) { return lockAndTimestampServices.migrator().map(AsyncInitializer::isInitialized).orElse(true); }
@Provides @Singleton public TimelockService provideTimelockService(TransactionManagers.LockAndTimestampServices lts) { return lts.timelock(); }
@Provides @Singleton public LockService provideLockService(TransactionManagers.LockAndTimestampServices lts) { return lts.lock(); }
@Provides @Singleton public TimestampService provideTimestampService(TransactionManagers.LockAndTimestampServices lts) { return lts.timestamp(); }
private static LockAndTimestampServices withCorroboratingTimestampService( LockAndTimestampServices lockAndTimestampServices) { TimelockService timelockService = TimestampCorroboratingTimelockService .create(lockAndTimestampServices.timelock()); TimestampService corroboratingTimestampService = new TimelockTimestampServiceAdapter(timelockService); return ImmutableLockAndTimestampServices.builder() .from(lockAndTimestampServices) .timelock(timelockService) .timestamp(corroboratingTimestampService) .build(); }
private static LockAndTimestampServices withMetrics( MetricsManager metricsManager, LockAndTimestampServices lockAndTimestampServices) { TimelockService timelockServiceWithBatching = lockAndTimestampServices.timelock(); TimelockService instrumentedTimelockService = new InstrumentedTimelockService( timelockServiceWithBatching, metricsManager.getRegistry()); return ImmutableLockAndTimestampServices.builder() .from(lockAndTimestampServices) .timestamp(new TimelockTimestampServiceAdapter(instrumentedTimelockService)) .timelock(instrumentedTimelockService) .build(); }
private static LockAndTimestampServices withRefreshingLockService( LockAndTimestampServices lockAndTimestampServices) { TimeLockClient timeLockClient = TimeLockClient.createDefault(lockAndTimestampServices.timelock()); return ImmutableLockAndTimestampServices.builder() .from(lockAndTimestampServices) .timestamp(new TimelockTimestampServiceAdapter(timeLockClient)) .timelock(timeLockClient) .lock(LockRefreshingLockService.create(lockAndTimestampServices.lock())) .close(timeLockClient::close) .build(); }
atlasFactory.getTimestampStoreInvalidator(), userAgent()); adapter.setTimestampService(lockAndTimestampServices.timestamp()); KeyValueService kvs = atlasFactory.getKeyValueService(); kvs = ProfilingKeyValueService.create(kvs); kvs = new SafeTableClearerKeyValueService(lockAndTimestampServices.timelock()::getImmutableTimestamp, kvs); new TimelockTimestampServiceAdapter(lockAndTimestampServices.timelock()), Suppliers.compose(SweepConfig::writeThreshold, sweepConfig::get), Suppliers.compose(SweepConfig::writeSizeThreshold, sweepConfig::get) new DefaultCleanerBuilder(keyValueService, lockAndTimestampServices.timelock(), ImmutableList.of(follower), transactionService) .setBackgroundScrubAggressively(config().backgroundScrubAggressively()) metricsManager, keyValueService, lockAndTimestampServices.timelock(), lockAndTimestampServices.timestampManagement(), lockAndTimestampServices.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS), AtlasDbMetrics.instrument(metricsManager.getRegistry(), TransactionManager.class, transactionManager); instrumentedTransactionManager.registerClosingCallback(lockAndTimestampServices.close()); instrumentedTransactionManager.registerClosingCallback(targetedSweep::close);
invalidator, userAgent); TimeLockClient timeLockClient = TimeLockClient.withSynchronousUnlocker(lockAndTimestampServices.timelock()); return ImmutableLockAndTimestampServices.builder() .from(lockAndTimestampServices) .timelock(timeLockClient) .lock(LockRefreshingLockService.create(lockAndTimestampServices.lock())) .close(timeLockClient::close) .build();
metricsManager, kvs, lts.timelock(), lts.timestampManagement(), lts.lock(), transactionService, Suppliers.ofInstance(AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS),