Пример #1
0
        protected override BoolResult SaveCheckpointCore(OperationContext context, AbsolutePath checkpointDirectory)
        {
            try
            {
                if (IsStoredEpochInvalid(out var storedEpoch))
                {
                    SetGlobalEntry(nameof(GlobalKeys.StoredEpoch), _configuration.Epoch);
                    Tracer.Info(context.TracingContext, $"Updated stored epoch from '{storedEpoch}' to '{_configuration.Epoch}'.");
                }

                var targetDirectory = checkpointDirectory.ToString();
                Tracer.Info(context.TracingContext, $"Saving content location database checkpoint to '{targetDirectory}'.");

                if (Directory.Exists(targetDirectory))
                {
                    FileUtilities.DeleteDirectoryContents(targetDirectory, deleteRootDirectory: true);
                }

                return(_keyValueStore.Use(store => store.SaveCheckpoint(targetDirectory)).ToBoolResult());
            }
            catch (Exception ex) when(ex.IsRecoverableIoException())
            {
                return(new BoolResult(ex, "Save checkpoint failed."));
            }
        }
        private void FullRangeCompaction(OperationContext context)
        {
            if (ShutdownStarted)
            {
                return;
            }

            context.PerformOperation(Tracer, () =>
                                     _keyValueStore.Use(store =>
            {
                foreach (var columnFamilyName in new[] { "default", nameof(Columns.ClusterState), nameof(Columns.Metadata) })
                {
                    if (context.Token.IsCancellationRequested)
                    {
                        break;
                    }

                    var result = context.PerformOperation(Tracer, () =>
                    {
                        store.CompactRange((byte[])null, null, columnFamilyName: columnFamilyName);
                        return(BoolResult.Success);
                    }, messageFactory: _ => $"ColumnFamily={columnFamilyName}");

                    if (!result.Succeeded)
                    {
                        break;
                    }
                }
            }).ToBoolResult()).IgnoreFailure();

            if (!ShutdownStarted)
            {
                lock (TimerChangeLock)
                {
                    // No try-catch required here.
                    _compactionTimer?.Change(_configuration.FullRangeCompactionInterval, Timeout.InfiniteTimeSpan);
                }
            }
        }
Пример #3
0
        /// <inheritdoc />
        protected override BoolResult SaveCheckpointCore(OperationContext context, AbsolutePath checkpointDirectory)
        {
            try
            {
                var targetDirectory = checkpointDirectory.ToString();
                Tracer.Info(context.TracingContext, $"Saving content location database checkpoint to '{targetDirectory}'.");

                if (Directory.Exists(targetDirectory))
                {
                    FileUtilities.DeleteDirectoryContents(targetDirectory, deleteRootDirectory: true);
                }

                return(_keyValueStore.Use(store => store.SaveCheckpoint(targetDirectory)).ToBoolResult());
            }
            catch (Exception ex) when(ex.IsRecoverableIoException())
            {
                return(new BoolResult(ex, "Save checkpoint failed."));
            }
        }