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); } } }
/// <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.")); } }