Esempio n. 1
0
        public Task DisableAsync(string name, string database = null, CancellationToken token = default)
        {
            database = _store.GetDatabase(database);
            var operation = new ToggleOngoingTaskStateOperation(name, OngoingTaskType.Subscription, disable: true);

            return(_store.Maintenance.ForDatabase(database).SendAsync(operation, token));
        }
Esempio n. 2
0
        public async Task CanToggleTaskState()
        {
            var clusterSize  = 3;
            var databaseName = "TestDB";
            var leader       = await CreateRaftClusterAndGetLeader(clusterSize);

            ModifyOngoingTaskResult             addWatcherRes;
            UpdatePeriodicBackupOperationResult updateBackupResult;

            using (var store = new DocumentStore
            {
                Urls = new[] { leader.WebUrl },
                Database = databaseName
            }.Initialize())
            {
                var doc            = new DatabaseRecord(databaseName);
                var databaseResult = await store.Maintenance.Server.SendAsync(new CreateDatabaseOperation(doc, clusterSize));

                Assert.Equal(clusterSize, databaseResult.Topology.AllNodes.Count());
                foreach (var server in Servers)
                {
                    await server.ServerStore.Cluster.WaitForIndexNotification(databaseResult.RaftCommandIndex);
                }
                foreach (var server in Servers)
                {
                    await server.ServerStore.DatabasesLandlord.TryGetOrCreateResourceStore(databaseName);
                }

                var watcher = new ExternalReplication("Watcher1", "Connection");

                addWatcherRes = await AddWatcherToReplicationTopology((DocumentStore)store, watcher, new[] { "http://127.0.0.1:9090" });

                var backupConfig = new PeriodicBackupConfiguration
                {
                    LocalSettings = new LocalSettings
                    {
                        FolderPath = NewDataPath(suffix: "BackupFolder")
                    },
                    FullBackupFrequency        = "* */1 * * *",
                    IncrementalBackupFrequency = "* */2 * * *",
                    Disabled = true
                };

                updateBackupResult = await store.Maintenance.SendAsync(new UpdatePeriodicBackupOperation(backupConfig));
            }

            using (var store = new DocumentStore
            {
                Urls = new[] { leader.WebUrl },
                Database = databaseName,
                Conventions =
                {
                    DisableTopologyUpdates = true
                }
            }.Initialize())
            {
                var taskId = addWatcherRes.TaskId;
                var op     = new ToggleOngoingTaskStateOperation(taskId, OngoingTaskType.Replication, true);
                var res    = await store.Maintenance.SendAsync(op);

                Assert.NotNull(res);
                Assert.True(res.RaftCommandIndex > 0);
                Assert.True(res.TaskId > 0);

                var result = await GetTaskInfo((DocumentStore)store, taskId, OngoingTaskType.Replication);

                Assert.Equal(OngoingTaskState.Disabled, result.TaskState);

                taskId = updateBackupResult.TaskId;
                op     = new ToggleOngoingTaskStateOperation(taskId, OngoingTaskType.Backup, false);
                res    = await store.Maintenance.SendAsync(op);

                Assert.NotNull(res);
                Assert.True(res.RaftCommandIndex > 0);
                Assert.True(res.TaskId > 0);

                result = await GetTaskInfo((DocumentStore)store, taskId, OngoingTaskType.Backup);

                Assert.Equal(OngoingTaskState.Enabled, result.TaskState);
            }
        }