예제 #1
0
        async Task <bool> TryCheckpoint(IPendingConfirmation confirmation)
        {
            _cancellationTokenSource.Token.ThrowIfCancellationRequested();

            LogContext.Debug?.Log("Partition: {PartitionId} updating checkpoint with offset: {Offset}", confirmation.Partition.PartitionId,
                                  confirmation.Offset);

            try
            {
                await confirmation.Checkpoint(_cancellationTokenSource.Token).ConfigureAwait(false);

                return(true);
            }
            catch (Exception exception)
            {
                LogContext.Error?.Log(exception, "Partition: {PartitionId} checkpoint failed with offset: {Offset}", confirmation.Partition,
                                      confirmation.Offset);
                confirmation.Faulted(exception);
                return(false);
            }
        }