/// <inheritdoc /> protected override BoolResult RestoreCheckpointCore(OperationContext context, AbsolutePath checkpointDirectory) { try { var nextActiveSlot = GetNextSlot(_activeSlot); var newStoreLocation = GetStoreLocation(nextActiveSlot); Tracer.Info(context.TracingContext, $"Loading content location database checkpoint from '{checkpointDirectory}' into '{newStoreLocation}'."); if (Directory.Exists(newStoreLocation)) { FileUtilities.DeleteDirectoryContents(newStoreLocation, deleteRootDirectory: true); } Directory.Move(checkpointDirectory.ToString(), newStoreLocation); var possiblyLoaded = Load(context, nextActiveSlot); if (possiblyLoaded.Succeeded) { SaveActiveSlot(context.TracingContext); } return(possiblyLoaded); } catch (Exception ex) when(ex.IsRecoverableIoException()) { return(new BoolResult(ex, "Restore checkpoint failed.")); } }
protected override BoolResult RestoreCheckpointCore(OperationContext context, AbsolutePath checkpointDirectory) { try { var activeSlot = _activeSlot; var newActiveSlot = GetNextSlot(activeSlot); var newStoreLocation = GetStoreLocation(newActiveSlot); Tracer.Info(context.TracingContext, $"Loading content location database checkpoint from '{checkpointDirectory}' into '{newStoreLocation}'."); if (Directory.Exists(newStoreLocation)) { FileUtilities.DeleteDirectoryContents(newStoreLocation, deleteRootDirectory: true); } Directory.Move(checkpointDirectory.ToString(), newStoreLocation); var possiblyLoaded = Load(context, newActiveSlot, clean: false); if (possiblyLoaded.Succeeded) { SaveActiveSlot(context.TracingContext); } // At this point in time, we have unloaded the old database and loaded the new one. This means we're // free to backup the old one's logs. var oldStoreLocation = GetStoreLocation(activeSlot); return(possiblyLoaded); } catch (Exception ex) when(ex.IsRecoverableIoException()) { return(new BoolResult(ex, "Restore checkpoint failed.")); } }
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.")); } }
/// <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.")); } }