public RetryStrategy(RecoveryOptions options, ILogger <RetryStrategy> logger, IRetryDelayStrategy delayedRecovery, IRetryExceptionEvaluator exceptionEvaluator) { _options = options ?? throw new ArgumentNullException(nameof(options)); _delayedRecovery = delayedRecovery ?? throw new ArgumentNullException(nameof(delayedRecovery)); _exceptionEvaluator = exceptionEvaluator ?? throw new ArgumentNullException(nameof(exceptionEvaluator)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public async Task CanRecoverSampleData() { var rootPath = NewDataPath(prefix: Guid.NewGuid().ToString()); var badName = GetDatabaseName(); var badPath = Path.Combine(rootPath, badName); var recoveredPath = Path.Combine(rootPath, "recovery"); using (var corruptedStore = GetDocumentStore( new Options { Path = badPath, RunInMemory = false, DeleteDatabaseOnDispose = false, ModifyDatabaseName = _ => badName })) { Samples.CreateNorthwindDatabase(corruptedStore); } Assert.True(Server.ServerStore.DatabasesLandlord.UnloadDirectly(badName)); var recoveryOptions = new RecoveryOptions { PathToDataFile = badPath, RecoveryDirectory = recoveredPath, }; using (var store = await RecoverDatabase(recoveryOptions)) { } }
public MessageBrokerOptionsBuilder AddRecoveryOptions(Action <RecoveryOptionsBuilder> builder) { var b = RecoveryOptionsBuilder.Create(Services); builder?.Invoke(b); _recoveryOptions = b.Build(); return(this); }
public async Task <DocumentStore> RecoverDatabase(RecoveryOptions options) { var recoveryExportPath = options.RecoveryDirectory; using (var recovery = new Recovery(new VoronRecoveryConfiguration { LoggingMode = Sparrow.Logging.LogMode.None, DataFileDirectory = options.PathToDataFile, PathToDataFile = Path.Combine(options.PathToDataFile, "Raven.voron"), OutputFileName = Path.Combine(recoveryExportPath, "recovery.ravendbdump"), MasterKey = options.MasterKey, DisableCopyOnWriteMode = options.DisableCopyOnWriteMode })) { recovery.Execute(Console.Out, CancellationToken.None); } var store = GetDocumentStore(new Options { AdminCertificate = options.AdminCertificate, ClientCertificate = options.ClientCertificate }); if (options.RecoveryTypes.HasFlag(RecoveryTypes.Documents)) { await ImportFile(store, recoveryExportPath, "recovery-2-Documents.ravendbdump"); } if (options.RecoveryTypes.HasFlag(RecoveryTypes.Revisions)) { await store.Maintenance.SendAsync(new ConfigureRevisionsOperation(new RevisionsConfiguration { Default = new RevisionsCollectionConfiguration { } })); await ImportFile(store, recoveryExportPath, "recovery-3-Revisions.ravendbdump"); } if (options.RecoveryTypes.HasFlag(RecoveryTypes.Conflicts)) { await ImportFile(store, recoveryExportPath, "recovery-4-Conflicts.ravendbdump"); } if (options.RecoveryTypes.HasFlag(RecoveryTypes.Counters)) { await ImportFile(store, recoveryExportPath, "recovery-5-Counters.ravendbdump"); } if (options.RecoveryTypes.HasFlag(RecoveryTypes.TimeSeries)) { await ImportFile(store, recoveryExportPath, "recovery-6-TimeSeries.ravendbdump"); } return(store); }
public abstract void SetFipsRecoveryOptions(RecoveryOptions options);
public RetryWithCircuitBreakerStrategy(RecoveryOptions options, ICircuitBreaker circuitBreaker, IRetryStrategy retry) { _options = options; _circuitBreaker = circuitBreaker; _retry = retry; }
public async Task CanRecoverTimeSeries() { var rootPath = NewDataPath(prefix: Guid.NewGuid().ToString()); var badName = GetDatabaseName(); var badPath = Path.Combine(rootPath, badName); var recoveredPath = Path.Combine(rootPath, "recovery"); using (var serverStore = GetDocumentStore(new Options { CreateDatabase = false })) using (Databases.EnsureDatabaseDeletion(badName, serverStore)) { using (var store = GetDocumentStore( new Options { Path = badPath, RunInMemory = false, DeleteDatabaseOnDispose = false, ModifyDatabaseName = _ => badName })) { using (var session = store.OpenAsyncSession()) { var user = new User { Name = "karmel" }; await session.StoreAsync(user, "Users/karmel"); var ts = session.TimeSeriesFor <TimeSeriesTypedSessionTests.HeartRateMeasure>(user); for (int i = 0; i < 1000; i++) { ts.Append(DateTime.UtcNow.AddMinutes(i), new TimeSeriesTypedSessionTests.HeartRateMeasure { HeartRate = i }, "some-tag"); } await session.SaveChangesAsync(); } } Assert.True(Server.ServerStore.DatabasesLandlord.UnloadDirectly(badName)); var recoveryOptions = new RecoveryOptions { PathToDataFile = badPath, RecoveryDirectory = recoveredPath, RecoveryTypes = RecoveryTypes.Documents | RecoveryTypes.TimeSeries }; using (var store = await RecoverDatabase(recoveryOptions)) { WaitForUserToContinueTheTest(store); using (var session = store.OpenAsyncSession()) { var u = await session.LoadAsync <User>("Users/karmel"); Assert.NotNull(u); var ts = session.TimeSeriesFor <TimeSeriesTypedSessionTests.HeartRateMeasure>(u); var entries = (await ts.GetAsync()).ToArray(); Assert.Equal(1000, entries.Length); for (var index = 0; index < entries.Length; index++) { var entry = entries[index]; Assert.Equal(index, entry.Value.HeartRate); Assert.Equal("some-tag", entry.Tag); } } } } }
public override void SetFipsRecoveryOptions(RecoveryOptions options) { base.StoreItem[ItemSchema.RecoveryOptions] = (int)options; }
// Token: 0x06001569 RID: 5481 RVA: 0x0004C2C7 File Offset: 0x0004A4C7 public override void SetFipsRecoveryOptions(RecoveryOptions options) { this.clientScanResultStorage.RecoveryOptions = (int)options; }