Search in sources :

Example 1 with Version

use of io.pravega.controller.store.Version in project pravega by pravega.

the class StreamTransactionMetadataTasks method sealTxnBody.

/**
 * Seals a txn and transitions it to COMMITTING (resp. ABORTING) state if commit param is true (resp. false).
 *
 * Post-condition:
 * 1. If seal completes successfully, then
 *     (a) txn state is COMMITTING/ABORTING,
 *     (b) CommitEvent/AbortEvent is present in the commit stream/abort stream,
 *     (c) txn is removed from host-txn index,
 *     (d) txn is removed from the timeout service.
 *
 * 2. If process fails after transitioning txn to COMMITTING/ABORTING state, but before responding to client, then
 * since txn is present in the host-txn index, some other controller process shall put CommitEvent/AbortEvent to
 * commit stream/abort stream.
 *
 * @param host    host id. It is different from hostId iff invoked from TxnSweeper for aborting orphaned txn.
 * @param scope   scope name.
 * @param stream  stream name.
 * @param commit  boolean indicating whether to commit txn.
 * @param txnId   txn id.
 * @param version expected version of txn node in store.
 * @param ctx     context.
 * @return        Txn status after sealing it.
 */
CompletableFuture<TxnStatus> sealTxnBody(final String host, final String scope, final String stream, final boolean commit, final UUID txnId, final Version version, final String writerId, final long timestamp, final OperationContext ctx) {
    Preconditions.checkNotNull(ctx, "Operation context cannot be null");
    long requestId = ctx.getRequestId();
    TxnResource resource = new TxnResource(scope, stream, txnId);
    Optional<Version> versionOpt = Optional.ofNullable(version);
    // Step 1. Add txn to current host's index, if it is not already present
    CompletableFuture<Void> addIndex = host.equals(hostId) && !timeoutService.containsTxn(scope, stream, txnId) ? // then txn would no longer be open.
    streamMetadataStore.addTxnToIndex(hostId, resource, version) : CompletableFuture.completedFuture(null);
    addIndex.whenComplete((v, e) -> {
        if (e != null) {
            log.debug(requestId, "Txn={}, already present/newly added to host-txn index of host={}", txnId, hostId);
        } else {
            log.debug(requestId, "Txn={}, added txn to host-txn index of host={}", txnId, hostId);
        }
    });
    // Step 2. Seal txn
    CompletableFuture<AbstractMap.SimpleEntry<TxnStatus, Integer>> sealFuture = addIndex.thenComposeAsync(x -> streamMetadataStore.sealTransaction(scope, stream, txnId, commit, versionOpt, writerId, timestamp, ctx, executor), executor).whenComplete((v, e) -> {
        if (e != null) {
            log.debug(requestId, "Txn={}, failed sealing txn", txnId);
        } else {
            log.debug(requestId, "Txn={}, sealed successfully, commit={}", txnId, commit);
        }
    });
    // Step 3. write event to corresponding stream.
    return sealFuture.thenComposeAsync(pair -> {
        TxnStatus status = pair.getKey();
        switch(status) {
            case COMMITTING:
                return writeCommitEvent(scope, stream, pair.getValue(), txnId, status, requestId);
            case ABORTING:
                return writeAbortEvent(scope, stream, pair.getValue(), txnId, status, requestId);
            case ABORTED:
            case COMMITTED:
                return CompletableFuture.completedFuture(status);
            case OPEN:
            case UNKNOWN:
            default:
                // exception would be thrown.
                return CompletableFuture.completedFuture(status);
        }
    }, executor).thenComposeAsync(status -> {
        // Step 4. Remove txn from timeoutService, and from the index.
        timeoutService.removeTxn(scope, stream, txnId);
        log.debug(requestId, "Txn={}, removed from timeout service", txnId);
        return streamMetadataStore.removeTxnFromIndex(host, resource, true).whenComplete((v, e) -> {
            if (e != null) {
                log.debug(requestId, "Txn={}, failed removing txn from host-txn index of host={}", txnId, hostId);
            } else {
                log.debug(requestId, "Txn={}, removed txn from host-txn index of host={}", txnId, hostId);
            }
        }).thenApply(x -> status);
    }, executor);
}
Also used : CommitEvent(io.pravega.shared.controller.event.CommitEvent) ControllerEventProcessors(io.pravega.controller.server.eventProcessor.ControllerEventProcessors) EventStreamWriter(io.pravega.client.stream.EventStreamWriter) StreamSegmentRecord(io.pravega.controller.store.stream.records.StreamSegmentRecord) LoggerFactory(org.slf4j.LoggerFactory) TagLogger(io.pravega.common.tracing.TagLogger) StoreException(io.pravega.controller.store.stream.StoreException) Pair(org.apache.commons.lang3.tuple.Pair) Duration(java.time.Duration) RETRYABLE_PREDICATE(io.pravega.controller.util.RetryHelper.RETRYABLE_PREDICATE) Synchronized(lombok.Synchronized) RetryHelper.withRetriesAsync(io.pravega.controller.util.RetryHelper.withRetriesAsync) BlockingQueue(java.util.concurrent.BlockingQueue) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Config(io.pravega.controller.util.Config) TxnStatus(io.pravega.controller.store.stream.TxnStatus) VersionedTransactionData(io.pravega.controller.store.stream.VersionedTransactionData) Optional(java.util.Optional) TimeoutService(io.pravega.controller.timeout.TimeoutService) StreamMetadataStore(io.pravega.controller.store.stream.StreamMetadataStore) PingTxnStatus(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnStatus) Futures(io.pravega.common.concurrent.Futures) GrpcAuthHelper(io.pravega.controller.server.security.auth.GrpcAuthHelper) OperationContext(io.pravega.controller.store.stream.OperationContext) TransactionMetrics(io.pravega.controller.metrics.TransactionMetrics) Getter(lombok.Getter) SegmentHelper(io.pravega.controller.server.SegmentHelper) Exceptions(io.pravega.common.Exceptions) CompletableFuture(java.util.concurrent.CompletableFuture) TimeoutServiceConfig(io.pravega.controller.timeout.TimeoutServiceConfig) Status(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnStatus.Status) AbortEvent(io.pravega.shared.controller.event.AbortEvent) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) EventStreamClientFactory(io.pravega.client.EventStreamClientFactory) TimerWheelTimeoutService(io.pravega.controller.timeout.TimerWheelTimeoutService) RecordHelper(io.pravega.controller.store.stream.records.RecordHelper) RetryHelper(io.pravega.controller.util.RetryHelper) EventWriterConfig(io.pravega.client.stream.EventWriterConfig) NameUtils(io.pravega.shared.NameUtils) ControllerEventProcessorConfig(io.pravega.controller.server.eventProcessor.ControllerEventProcessorConfig) Timer(io.pravega.common.Timer) TxnResource(io.pravega.controller.store.task.TxnResource) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) TimeUnit(java.util.concurrent.TimeUnit) AtomicLong(java.util.concurrent.atomic.AtomicLong) AbstractMap(java.util.AbstractMap) Version(io.pravega.controller.store.Version) Preconditions(com.google.common.base.Preconditions) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Version(io.pravega.controller.store.Version) TxnResource(io.pravega.controller.store.task.TxnResource) TxnStatus(io.pravega.controller.store.stream.TxnStatus) PingTxnStatus(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnStatus)

Example 2 with Version

use of io.pravega.controller.store.Version in project pravega by pravega.

the class StreamTransactionMetadataTasks method addTxnToTimeoutService.

private void addTxnToTimeoutService(String scope, String stream, long lease, long maxExecutionPeriod, UUID txnId, CompletableFuture<VersionedTransactionData> txnFuture, long requestId) {
    Version version = null;
    long executionExpiryTime = System.currentTimeMillis() + maxExecutionPeriod;
    if (!txnFuture.isCompletedExceptionally()) {
        version = txnFuture.join().getVersion();
        executionExpiryTime = txnFuture.join().getMaxExecutionExpiryTime();
    }
    timeoutService.addTxn(scope, stream, txnId, version, lease, executionExpiryTime);
    log.trace(requestId, "Txn={}, added to timeout service on host={}", txnId, hostId);
}
Also used : Version(io.pravega.controller.store.Version)

Example 3 with Version

use of io.pravega.controller.store.Version in project pravega by pravega.

the class PersistentStreamBase method createTransaction.

@Override
public CompletableFuture<VersionedTransactionData> createTransaction(final UUID txnId, final long lease, final long maxExecutionTime, OperationContext context) {
    Preconditions.checkNotNull(context, "Operation context cannot be null");
    final long current = System.currentTimeMillis();
    final long leaseTimestamp = current + lease;
    final long maxExecTimestamp = current + maxExecutionTime;
    // extract epoch from txnid
    final int epoch = RecordHelper.getTransactionEpoch(txnId);
    ActiveTxnRecord record = ActiveTxnRecord.builder().txnStatus(TxnStatus.OPEN).leaseExpiryTime(leaseTimestamp).txCreationTimestamp(current).maxExecutionExpiryTime(maxExecTimestamp).writerId(Optional.empty()).commitTime(Optional.empty()).commitOrder(Optional.empty()).build();
    return verifyNotSealed(context).thenCompose(v -> createNewTransaction(epoch, txnId, record, context).thenApply(version -> new VersionedTransactionData(epoch, txnId, version, TxnStatus.OPEN, current, maxExecTimestamp, "", Long.MIN_VALUE, Long.MIN_VALUE, ImmutableMap.of())));
}
Also used : ActiveTxnRecord(io.pravega.controller.store.stream.records.ActiveTxnRecord) StreamSegmentRecord(io.pravega.controller.store.stream.records.StreamSegmentRecord) SneakyThrows(lombok.SneakyThrows) BiFunction(java.util.function.BiFunction) LoggerFactory(org.slf4j.LoggerFactory) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) TagLogger(io.pravega.common.tracing.TagLogger) VersionedMetadata(io.pravega.controller.store.VersionedMetadata) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Map(java.util.Map) DataNotFoundException(io.pravega.controller.store.stream.StoreException.DataNotFoundException) EpochTransitionRecord(io.pravega.controller.store.stream.records.EpochTransitionRecord) ImmutableSet(com.google.common.collect.ImmutableSet) StreamCutReferenceRecord(io.pravega.controller.store.stream.records.StreamCutReferenceRecord) StreamTruncationRecord(io.pravega.controller.store.stream.records.StreamTruncationRecord) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) Collection(java.util.Collection) Set(java.util.Set) CompletionException(java.util.concurrent.CompletionException) ActiveTxnRecord(io.pravega.controller.store.stream.records.ActiveTxnRecord) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) List(java.util.List) CompletionStage(java.util.concurrent.CompletionStage) Optional(java.util.Optional) HistoryTimeSeries(io.pravega.controller.store.stream.records.HistoryTimeSeries) Futures(io.pravega.common.concurrent.Futures) IntStream(java.util.stream.IntStream) CompletedTxnRecord(io.pravega.controller.store.stream.records.CompletedTxnRecord) CommittingTransactionsRecord(io.pravega.controller.store.stream.records.CommittingTransactionsRecord) NameUtils.computeSegmentId(io.pravega.shared.NameUtils.computeSegmentId) Exceptions(io.pravega.common.Exceptions) HistoryTimeSeriesRecord(io.pravega.controller.store.stream.records.HistoryTimeSeriesRecord) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) RetentionSet(io.pravega.controller.store.stream.records.RetentionSet) DATA_NOT_FOUND_PREDICATE(io.pravega.controller.store.stream.AbstractStreamMetadataStore.DATA_NOT_FOUND_PREDICATE) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) NameUtils.getSegmentNumber(io.pravega.shared.NameUtils.getSegmentNumber) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) StateRecord(io.pravega.controller.store.stream.records.StateRecord) StreamSubscriber(io.pravega.controller.store.stream.records.StreamSubscriber) LinkedList(java.util.LinkedList) RecordHelper(io.pravega.controller.store.stream.records.RecordHelper) SimpleEntry(java.util.AbstractMap.SimpleEntry) LongSummaryStatistics(java.util.LongSummaryStatistics) CollectionHelpers(io.pravega.common.util.CollectionHelpers) SealedSegmentsMapShard(io.pravega.controller.store.stream.records.SealedSegmentsMapShard) NameUtils(io.pravega.shared.NameUtils) Executor(java.util.concurrent.Executor) WriterMark(io.pravega.controller.store.stream.records.WriterMark) lombok.val(lombok.val) StreamCutRecord(io.pravega.controller.store.stream.records.StreamCutRecord) AtomicLong(java.util.concurrent.atomic.AtomicLong) StreamConfigurationRecord(io.pravega.controller.store.stream.records.StreamConfigurationRecord) EpochRecord(io.pravega.controller.store.stream.records.EpochRecord) ConcurrentSkipListSet(java.util.concurrent.ConcurrentSkipListSet) Version(io.pravega.controller.store.Version) Preconditions(com.google.common.base.Preconditions) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Comparator(java.util.Comparator) Collections(java.util.Collections)

Example 4 with Version

use of io.pravega.controller.store.Version in project pravega by pravega.

the class PersistentStreamBase method sealActiveTxn.

/**
 * Seal a transaction in OPEN/COMMITTING_TXN/ABORTING state. This method does CAS on the transaction VersionedMetadata node if
 * the transaction is in OPEN state, optionally checking version of transaction VersionedMetadata node, if required.
 *
 * @param epoch   transaction epoch.
 * @param txId    transaction identifier.
 * @param commit  boolean indicating whether to commit or abort the transaction.
 * @param version optional expected version of transaction node to validate before updating it.
 * @param writerId writer Id
 * @param timestamp commit timestamp supplied by writer
 * @return        a pair containing transaction status and its epoch.
 */
private CompletableFuture<SimpleEntry<TxnStatus, Integer>> sealActiveTxn(final int epoch, final UUID txId, final boolean commit, final Optional<Version> version, final String writerId, final long timestamp, OperationContext context) {
    return getActiveTx(epoch, txId, context).thenCompose(data -> {
        ActiveTxnRecord txnRecord = data.getObject();
        Version dataVersion = version.orElseGet(data::getVersion);
        TxnStatus status = txnRecord.getTxnStatus();
        switch(status) {
            case OPEN:
                return sealActiveTx(epoch, txId, commit, txnRecord, dataVersion, writerId, timestamp, context).thenApply(y -> new SimpleEntry<>(commit ? TxnStatus.COMMITTING : TxnStatus.ABORTING, epoch));
            case COMMITTING:
            case COMMITTED:
                if (commit) {
                    return CompletableFuture.completedFuture(new SimpleEntry<>(status, epoch));
                } else {
                    throw StoreException.create(StoreException.Type.ILLEGAL_STATE, "Stream: " + getName() + " Transaction: " + txId.toString() + " State: " + status.name());
                }
            case ABORTING:
            case ABORTED:
                if (commit) {
                    throw StoreException.create(StoreException.Type.ILLEGAL_STATE, "Stream: " + getName() + " Transaction: " + txId.toString() + " State: " + status.name());
                } else {
                    return CompletableFuture.completedFuture(new SimpleEntry<>(status, epoch));
                }
            default:
                throw StoreException.create(StoreException.Type.DATA_NOT_FOUND, "Stream: " + getName() + " Transaction: " + txId.toString());
        }
    });
}
Also used : ActiveTxnRecord(io.pravega.controller.store.stream.records.ActiveTxnRecord) VersionedMetadata(io.pravega.controller.store.VersionedMetadata) Version(io.pravega.controller.store.Version)

Example 5 with Version

use of io.pravega.controller.store.Version in project pravega by pravega.

the class PravegaTablesStream method updateWriterMarkRecord.

@Override
CompletableFuture<Void> updateWriterMarkRecord(String writer, long timestamp, ImmutableMap<Long, Long> position, boolean isAlive, Version version, OperationContext context) {
    Preconditions.checkNotNull(context, "operation context cannot be null");
    WriterMark mark = new WriterMark(timestamp, position, isAlive);
    return Futures.toVoid(getWritersTable(context).thenCompose(table -> storeHelper.updateEntry(table, writer, mark, WriterMark::toBytes, version, context.getRequestId())));
}
Also used : DATA_NOT_EMPTY_PREDICATE(io.pravega.controller.store.stream.AbstractStreamMetadataStore.DATA_NOT_EMPTY_PREDICATE) BiFunction(java.util.function.BiFunction) LoggerFactory(org.slf4j.LoggerFactory) NameUtils.getQualifiedTableName(io.pravega.shared.NameUtils.getQualifiedTableName) COMPLETED_TRANSACTIONS_BATCHES_TABLE(io.pravega.shared.NameUtils.COMPLETED_TRANSACTIONS_BATCHES_TABLE) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) ByteBuffer(java.nio.ByteBuffer) TagLogger(io.pravega.common.tracing.TagLogger) VersionedMetadata(io.pravega.controller.store.VersionedMetadata) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) SEPARATOR(io.pravega.shared.NameUtils.SEPARATOR) Map(java.util.Map) CONFIGURATION_KEY(io.pravega.shared.NameUtils.CONFIGURATION_KEY) EpochTransitionRecord(io.pravega.controller.store.stream.records.EpochTransitionRecord) Subscribers(io.pravega.controller.store.stream.records.Subscribers) StreamTruncationRecord(io.pravega.controller.store.stream.records.StreamTruncationRecord) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) BYTES_TO_UUID_FUNCTION(io.pravega.controller.store.PravegaTablesStoreHelper.BYTES_TO_UUID_FUNCTION) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) WRITERS_POSITIONS_TABLE(io.pravega.shared.NameUtils.WRITERS_POSITIONS_TABLE) CompletionException(java.util.concurrent.CompletionException) ActiveTxnRecord(io.pravega.controller.store.stream.records.ActiveTxnRecord) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) Objects(java.util.Objects) List(java.util.List) BYTES_TO_INTEGER_FUNCTION(io.pravega.controller.store.PravegaTablesStoreHelper.BYTES_TO_INTEGER_FUNCTION) Optional(java.util.Optional) HistoryTimeSeries(io.pravega.controller.store.stream.records.HistoryTimeSeries) Futures(io.pravega.common.concurrent.Futures) LONG_TO_BYTES_FUNCTION(io.pravega.controller.store.PravegaTablesStoreHelper.LONG_TO_BYTES_FUNCTION) EPOCH_TRANSITION_KEY(io.pravega.shared.NameUtils.EPOCH_TRANSITION_KEY) CompletedTxnRecord(io.pravega.controller.store.stream.records.CompletedTxnRecord) CommittingTransactionsRecord(io.pravega.controller.store.stream.records.CommittingTransactionsRecord) RETENTION_SET_KEY(io.pravega.shared.NameUtils.RETENTION_SET_KEY) Exceptions(io.pravega.common.Exceptions) EPOCH_RECORD_KEY_FORMAT(io.pravega.shared.NameUtils.EPOCH_RECORD_KEY_FORMAT) WAITING_REQUEST_PROCESSOR_PATH(io.pravega.shared.NameUtils.WAITING_REQUEST_PROCESSOR_PATH) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) DATA_NOT_FOUND_PREDICATE(io.pravega.controller.store.stream.PravegaTablesStreamMetadataStore.DATA_NOT_FOUND_PREDICATE) COMMITTING_TRANSACTIONS_RECORD_KEY(io.pravega.shared.NameUtils.COMMITTING_TRANSACTIONS_RECORD_KEY) RetentionSet(io.pravega.controller.store.stream.records.RetentionSet) SUBSCRIBER_KEY_PREFIX(io.pravega.shared.NameUtils.SUBSCRIBER_KEY_PREFIX) AtomicReference(java.util.concurrent.atomic.AtomicReference) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) CURRENT_EPOCH_KEY(io.pravega.shared.NameUtils.CURRENT_EPOCH_KEY) Strings(com.google.common.base.Strings) HISTORY_TIMESERIES_CHUNK_FORMAT(io.pravega.shared.NameUtils.HISTORY_TIMESERIES_CHUNK_FORMAT) TRANSACTIONS_IN_EPOCH_TABLE_FORMAT(io.pravega.shared.NameUtils.TRANSACTIONS_IN_EPOCH_TABLE_FORMAT) StateRecord(io.pravega.controller.store.stream.records.StateRecord) BYTES_TO_LONG_FUNCTION(io.pravega.controller.store.PravegaTablesStoreHelper.BYTES_TO_LONG_FUNCTION) SEGMENT_MARKER_PATH_FORMAT(io.pravega.shared.NameUtils.SEGMENT_MARKER_PATH_FORMAT) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) StreamSubscriber(io.pravega.controller.store.stream.records.StreamSubscriber) SEGMENTS_SEALED_SIZE_MAP_SHARD_FORMAT(io.pravega.shared.NameUtils.SEGMENTS_SEALED_SIZE_MAP_SHARD_FORMAT) INTEGER_TO_BYTES_FUNCTION(io.pravega.controller.store.PravegaTablesStoreHelper.INTEGER_TO_BYTES_FUNCTION) SealedSegmentsMapShard(io.pravega.controller.store.stream.records.SealedSegmentsMapShard) METADATA_TABLE(io.pravega.shared.NameUtils.METADATA_TABLE) STATE_KEY(io.pravega.shared.NameUtils.STATE_KEY) EPOCHS_WITH_TRANSACTIONS_TABLE(io.pravega.shared.NameUtils.EPOCHS_WITH_TRANSACTIONS_TABLE) WriterMark(io.pravega.controller.store.stream.records.WriterMark) StreamCutRecord(io.pravega.controller.store.stream.records.StreamCutRecord) TRUNCATION_KEY(io.pravega.shared.NameUtils.TRUNCATION_KEY) INTERNAL_SCOPE_NAME(io.pravega.shared.NameUtils.INTERNAL_SCOPE_NAME) StreamConfigurationRecord(io.pravega.controller.store.stream.records.StreamConfigurationRecord) AbstractMap(java.util.AbstractMap) EpochRecord(io.pravega.controller.store.stream.records.EpochRecord) Version(io.pravega.controller.store.Version) COMPLETED_TRANSACTIONS_BATCH_TABLE_FORMAT(io.pravega.shared.NameUtils.COMPLETED_TRANSACTIONS_BATCH_TABLE_FORMAT) PravegaTablesStoreHelper(io.pravega.controller.store.PravegaTablesStoreHelper) CREATION_TIME_KEY(io.pravega.shared.NameUtils.CREATION_TIME_KEY) SUBSCRIBER_SET_KEY(io.pravega.shared.NameUtils.SUBSCRIBER_SET_KEY) Preconditions(com.google.common.base.Preconditions) VisibleForTesting(com.google.common.annotations.VisibleForTesting) RETENTION_STREAM_CUT_RECORD_KEY_FORMAT(io.pravega.shared.NameUtils.RETENTION_STREAM_CUT_RECORD_KEY_FORMAT) Collections(java.util.Collections) SEGMENT_SEALED_EPOCH_KEY_FORMAT(io.pravega.shared.NameUtils.SEGMENT_SEALED_EPOCH_KEY_FORMAT) WriterMark(io.pravega.controller.store.stream.records.WriterMark)

Aggregations

Version (io.pravega.controller.store.Version)13 UUID (java.util.UUID)9 VersionedMetadata (io.pravega.controller.store.VersionedMetadata)6 ActiveTxnRecord (io.pravega.controller.store.stream.records.ActiveTxnRecord)6 AtomicLong (java.util.concurrent.atomic.AtomicLong)6 VisibleForTesting (com.google.common.annotations.VisibleForTesting)5 Preconditions (com.google.common.base.Preconditions)5 StreamConfiguration (io.pravega.client.stream.StreamConfiguration)5 Exceptions (io.pravega.common.Exceptions)5 Futures (io.pravega.common.concurrent.Futures)5 TagLogger (io.pravega.common.tracing.TagLogger)5 WriterMark (io.pravega.controller.store.stream.records.WriterMark)5 ImmutableMap (com.google.common.collect.ImmutableMap)4 CommittingTransactionsRecord (io.pravega.controller.store.stream.records.CommittingTransactionsRecord)4 CompletedTxnRecord (io.pravega.controller.store.stream.records.CompletedTxnRecord)4 EpochRecord (io.pravega.controller.store.stream.records.EpochRecord)4 EpochTransitionRecord (io.pravega.controller.store.stream.records.EpochTransitionRecord)4 HistoryTimeSeries (io.pravega.controller.store.stream.records.HistoryTimeSeries)4 RecordHelper (io.pravega.controller.store.stream.records.RecordHelper)4 RetentionSet (io.pravega.controller.store.stream.records.RetentionSet)4