Beispiel #1
0
        private async Task DeleteServerWideTaskCommand(OngoingTaskType taskType)
        {
            var name = GetStringQueryString("name", required: true);

            using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
            {
                var deleteConfiguration = new DeleteServerWideTaskCommand.DeleteConfiguration
                {
                    TaskName = name,
                    Type     = taskType
                };

                var(newIndex, _) = await ServerStore.DeleteServerWideTaskAsync(deleteConfiguration, GetRaftRequestIdFromQuery());

                await ServerStore.WaitForCommitIndexChange(RachisConsensus.CommitIndexModification.GreaterOrEqual, newIndex);

                await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var deleteResponse = new ServerWideTaskResponse
                        {
                            Name             = name,
                            RaftCommandIndex = newIndex
                        };

                        HttpContext.Response.StatusCode = (int)HttpStatusCode.OK;
                        context.Write(writer, deleteResponse.ToJson());
                    }
            }
        }
        public async Task ToggleServerWideTaskState()
        {
            var typeAsString = GetStringQueryString("type", required: true);
            var taskName     = GetStringQueryString("name", required: true);
            var disable      = GetBoolValueQueryString("disable") ?? true;

            if (Enum.TryParse(typeAsString, out OngoingTaskType type) == false)
            {
                throw new ArgumentException($"{typeAsString} is unknown task type.");
            }

            using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
                using (context.OpenReadTransaction())
                {
                    var configuration = new ToggleServerWideTaskStateCommand.Parameters
                    {
                        Type     = type,
                        TaskName = taskName,
                        Disable  = disable
                    };
                    var(newIndex, _) = await ServerStore.ToggleServerWideTaskStateAsync(configuration, GetRaftRequestIdFromQuery());

                    await ServerStore.WaitForCommitIndexChange(RachisConsensus.CommitIndexModification.GreaterOrEqual, newIndex);

                    using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    {
                        var toggleResponse = new ServerWideTaskResponse
                        {
                            Name             = taskName,
                            RaftCommandIndex = newIndex
                        };

                        context.Write(writer, toggleResponse.ToJson());
                        writer.Flush();
                    }
                }
        }