Airflow前置任务重试成功后,下游任务仍显示upstream_failed状态求解决
问题分析
在Airflow 2.0.2版本中,当上游任务(任务A)首次失败后重试成功时,下游任务(任务B)触发规则设为ALL_SUCCESS却被标记为upstream_failed的问题,属于该版本的已知缺陷:调度器在任务A首次失败时,会将任务B标记为upstream_failed,且不会在任务A重试成功后自动重新评估任务B的触发条件。
修复方案
1. 升级Airflow版本(推荐长期方案)
Airflow 2.1.0及以上版本修复了多个触发规则与重试任务相关的状态判断bug。在AWS MWAA中,你可以:
- 创建新的MWAA环境并选择Airflow 2.1.0+版本
- 若现有环境支持版本升级,直接在AWS控制台更新Airflow版本
2. 修改任务B的触发规则(临时/兼容方案)
如果无法立即升级版本,可将任务B的触发规则从ALL_SUCCESS改为NONE_FAILED_OR_SKIPPED。该规则会忽略上游任务的中间失败记录,只要上游任务最终状态为成功,就会触发下游任务执行。示例代码:
task_b = PythonOperator( task_id='task_b', python_callable=your_function, trigger_rule='NONE_FAILED_OR_SKIPPED', dag=dag )
3. 手动触发任务B(应急方案)
对于已经出现异常的DAG运行实例,可通过Airflow UI手动清除任务B的upstream_failed状态,然后点击"Trigger"按钮触发任务B执行。
4. 优化MWAA调度器配置
确保MWAA环境的调度器参数dag_dir_list_interval设置合理(建议设为30秒),让调度器能及时感知任务状态的更新,减少状态延迟导致的异常。
内容的提问来源于stack exchange,提问作者val
相关产品推荐
相关产品推荐

