Ejemplo n.º 1
0
        private async Task FailSubtaskAsync(SubtaskInProgress failedSubtaskInProgress)
        {
            var failedSubtask = await _dbContext.Subtasks.FindAsync(failedSubtaskInProgress.SubtaskId);

            failedSubtask.Status = SubtaskStatus.Error;
            failedSubtask.Errors = failedSubtaskInProgress.Errors;

            _subtasksInProgressCleanupService.RemoveSubtasksInProgress(failedSubtask.Id);

            await FailDistributedTask(failedSubtask);
        }
Ejemplo n.º 2
0
        private async Task FinishSubtaskAsync(int subtaskId)
        {
            var finishedSubtasksInProgress = _dbContext.SubtasksInProgress.Where(subtaskInProgress =>
                                                                                 subtaskInProgress.SubtaskId == subtaskId && subtaskInProgress.Status == SubtaskInProgressStatus.Done);
            var subtaskResult = await GetMostTrustedSubtaskResultAsync(finishedSubtasksInProgress);

            var finishedSubtask = await _dbContext.Subtasks.FindAsync(subtaskId);

            finishedSubtask.Result = subtaskResult;
            finishedSubtask.Status = SubtaskStatus.Done;

            _subtasksInProgressCleanupService.RemoveSubtasksInProgress(subtaskId);

            await _dbContext.SaveChangesAsync();

            if (IsDistributedTaskFullyComputed(finishedSubtask.DistributedTaskId))
            {
                await FinishDistributedTaskAsync(finishedSubtask.DistributedTaskId);
            }
        }