コード例 #1
0
ファイル: RetryStrategy.cs プロジェクト: brenpike/Chatter
 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));
 }
コード例 #2
0
        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))
            {
            }
        }
コード例 #3
0
        public MessageBrokerOptionsBuilder AddRecoveryOptions(Action <RecoveryOptionsBuilder> builder)
        {
            var b = RecoveryOptionsBuilder.Create(Services);

            builder?.Invoke(b);
            _recoveryOptions = b.Build();
            return(this);
        }
コード例 #4
0
ファイル: RecoveryTestBase.cs プロジェクト: radtek/ravendb
        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);
        }
コード例 #5
0
 public abstract void SetFipsRecoveryOptions(RecoveryOptions options);
コード例 #6
0
 public RetryWithCircuitBreakerStrategy(RecoveryOptions options, ICircuitBreaker circuitBreaker, IRetryStrategy retry)
 {
     _options        = options;
     _circuitBreaker = circuitBreaker;
     _retry          = retry;
 }
コード例 #7
0
        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);
                            }
                        }
                    }
                }
        }
コード例 #8
0
 public override void SetFipsRecoveryOptions(RecoveryOptions options)
 {
     base.StoreItem[ItemSchema.RecoveryOptions] = (int)options;
 }
コード例 #9
0
 // Token: 0x06001569 RID: 5481 RVA: 0x0004C2C7 File Offset: 0x0004A4C7
 public override void SetFipsRecoveryOptions(RecoveryOptions options)
 {
     this.clientScanResultStorage.RecoveryOptions = (int)options;
 }