diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/subtasks.py b/SAS/TMSS/backend/src/tmss/tmssapp/subtasks.py index 68f849f77d160de4b52132961557dee6a82b7835..2d230fd4e14c42f44bef0df1e8b0d98d8b922585 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/subtasks.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/subtasks.py @@ -951,26 +951,27 @@ def schedule_subtask(subtask: Subtask) -> Subtask: subtask.save() try: - if subtask.specifications_template.type.value == SubtaskType.Choices.PIPELINE.value: - return schedule_pipeline_subtask(subtask) + with transaction.atomic(): + if subtask.specifications_template.type.value == SubtaskType.Choices.PIPELINE.value: + return schedule_pipeline_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.OBSERVATION.value: - return schedule_observation_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.OBSERVATION.value: + return schedule_observation_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.QA_FILES.value: - return schedule_qafile_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.QA_FILES.value: + return schedule_qafile_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.QA_PLOTS.value: - return schedule_qaplots_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.QA_PLOTS.value: + return schedule_qaplots_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.INGEST.value: - return schedule_ingest_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.INGEST.value: + return schedule_ingest_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.CLEANUP.value: - return schedule_cleanup_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.CLEANUP.value: + return schedule_cleanup_subtask(subtask) - if subtask.specifications_template.type.value == SubtaskType.Choices.COPY.value: - return schedule_copy_subtask(subtask) + if subtask.specifications_template.type.value == SubtaskType.Choices.COPY.value: + return schedule_copy_subtask(subtask) raise SubtaskSchedulingException("Cannot schedule subtask id=%d because there is no schedule-method known for this subtasktype=%s." % (subtask.pk, subtask.specifications_template.type.value))