Частичное завершение заданий
Описание
В процессе выполнения заданий часть задач может слететь (aborted) по тем или иным причинам. Предлагается убивать в этом случае не все задание, а лишь те задачи, в зависимостях которых есть слетевшие задачи.
Текущее состояние
95% done, поддержка начиная с r1414
Подробное описание
Рассмотрим пример:

Предположим, что задача "C" по каким-то причинам (возможно, временного характера: "в данный момент нет вычислительных ресурсов") слетела. Предполагается, что в этом случае имеет смысл не убивать все задание, а дать задачам B и D досчитаться:

При этом предполагается, что задания будут иметь новый атрибут "degraded", который будет устанавливаться в true, как только хотя бы одна из задач слетела. Это будет означать, что задание целиком уже выполнено не будет, хотя частично выполняться продолжит (и закончит). Соответственно, слетевшая задача получает состояние aborted (красные на картинке), а не выполнимые в следствие этого - состояние parent_aborted (желтые на картинке).
Преимущества, которые это даст
Можно составить новое задание, частично использующее результаты предыдущего, а не выкидывать сразу все.
Какие компоненты нуждаются в модификации
pilot, pilot_cli, а так же понимание новых состояний и degraded для всех зависимых программ.
Сценарий использования
Пользователь Вася запускает задание по схеме выше. Задача C слетает. Он исправляет ее, и запускает новое задание, вида:

Тем самым он экономит время и ресурсы.
