Правило триггера "all_done" не работает, когда его родители помечены как State.None
вместо State.Upstream_Failed
.
Проблема, насколько я понимаю, заключается в том, что задачи, выполняемые после невыполненной задачи, никогда не ставятся в очередь, и, следовательно, их состояние остается None
навсегда.
Вот частичное древовидное представление моего DAG, которое, как мне кажется,демонстрирует проблему:
В этом DAG tmp_cleanup
имеет значение all_done
, потому что мы хотим выполнить очистку независимо от того, происходит ли сбой или нет.Это работает в случае сбоя непосредственного родителя (load_att_wv2_m1bs
), но не в случае сбоя * -grandparent (rm_spurrious_gis_files
или unzip_wv2_ingest
), поскольку UPSTREAM_FAILED
никогда не распространяется.
AIRFLOW-1515 сообщает об этом как об ошибке, создавая у меня впечатление, что all_done
не работает для * -grandparents в 1.8
.
Если это не может быть исправлено путем изменения конфигурации, я хочу знать,лучший способ воссоздать поведение all_done
, чтобы я мог запустить задачу очистки в конце группы обеспечения доступности баз данных, независимо от того, будет ли она неудачной или успешной.