private Optional<ValueAndBound<T>> readLatestValueFromStore() { Optional<ValueAndBound<T>> storedValueAndBound = store.getAgreedValue(); accumulateCachedValue(storedValueAndBound); return storedValueAndBound; }
@Override public Optional<ValueAndBound<T>> getLastKnownLocalValue() { ValueAndBound<T> cachedValue = cache.get(); return Objects.equals(getInitialCacheValue(), cachedValue) ? Optional.empty() : Optional.of(cachedValue); }
@Override public Optional<ValueAndBound<T>> getValueForTimestamp(long timestamp) { ValueAndBound<T> cachedReference = cache.get(); if (cachedReference.bound() < timestamp) { return readLatestValueFromStore() .filter(valueAndBound -> valueAndBound.bound() >= timestamp); } return Optional.of(cachedReference); }
public static CoordinationService<InternalSchemaMetadata> createDefault( KeyValueService keyValueService, LongSupplier timestampSupplier, boolean initializeAsync) { CoordinationService<VersionedInternalSchemaMetadata> versionedService = new CoordinationServiceImpl<>( KeyValueServiceCoordinationStore.create( ObjectMappers.newServerObjectMapper(), keyValueService, AtlasDbConstants.DEFAULT_METADATA_COORDINATION_KEY, timestampSupplier, VersionedInternalSchemaMetadata.class, initializeAsync)); return wrapHidingVersionSerialization(versionedService); } }
private static TransactionSchemaManager createTransactionSchemaManager(TimestampService ts) { CoordinationServiceImpl<VersionedInternalSchemaMetadata> rawService = new CoordinationServiceImpl<>( KeyValueServiceCoordinationStore.create( ObjectMappers.newServerObjectMapper(), new InMemoryKeyValueService(true), PtBytes.toBytes("aaa"), ts::getFreshTimestamp, VersionedInternalSchemaMetadata.class, false)); return new TransactionSchemaManager(CoordinationServices.wrapHidingVersionSerialization(rawService)); }
public static CoordinationService<InternalSchemaMetadata> createDefault( KeyValueService keyValueService, LongSupplier timestampSupplier, boolean initializeAsync) { CoordinationService<VersionedInternalSchemaMetadata> versionedService = new CoordinationServiceImpl<>( KeyValueServiceCoordinationStore.create( ObjectMappers.newServerObjectMapper(), keyValueService, AtlasDbConstants.DEFAULT_METADATA_COORDINATION_KEY, timestampSupplier, VersionedInternalSchemaMetadata.class, initializeAsync)); return wrapHidingVersionSerialization(versionedService); } }
@Override public CheckAndSetResult<ValueAndBound<T>> tryTransformCurrentValue(Function<ValueAndBound<T>, T> transform) { CheckAndSetResult<ValueAndBound<T>> transformResult = store.transformAgreedValue(transform); ValueAndBound<T> existingValue = Iterables.getOnlyElement(transformResult.existingValues()); accumulateCachedValue(Optional.of(existingValue)); return transformResult; }
@Override public Optional<ValueAndBound<T>> getValueForTimestamp(long timestamp) { ValueAndBound<T> cachedReference = cache.get(); if (cachedReference.bound() < timestamp) { return readLatestValueFromStore() .filter(valueAndBound -> valueAndBound.bound() >= timestamp); } return Optional.of(cachedReference); }
@Override public Optional<ValueAndBound<T>> getLastKnownLocalValue() { ValueAndBound<T> cachedValue = cache.get(); return Objects.equals(getInitialCacheValue(), cachedValue) ? Optional.empty() : Optional.of(cachedValue); }
private Optional<ValueAndBound<T>> readLatestValueFromStore() { Optional<ValueAndBound<T>> storedValueAndBound = store.getAgreedValue(); accumulateCachedValue(storedValueAndBound); return storedValueAndBound; }
@Override public CheckAndSetResult<ValueAndBound<T>> tryTransformCurrentValue(Function<ValueAndBound<T>, T> transform) { CheckAndSetResult<ValueAndBound<T>> transformResult = store.transformAgreedValue(transform); ValueAndBound<T> existingValue = Iterables.getOnlyElement(transformResult.existingValues()); accumulateCachedValue(Optional.of(existingValue)); return transformResult; }