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)); }
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); } }