**Description**

For a DAG that looks like this:

```
A >> B
```

If A fails, B goes into "upstream_failed" state. If a user then marks A "success", B will remain in "upstream_failed" state. It will not automatically start running. This scenario often happens if the failure of A is dealt with outside of Airflow and the user does not want Airflow to run A again. But he usually expect Airflow to run B after A is marked "success".

**Use case / motivation**

After A is marked "success", its downstream tasks B should be cleared automatically and get ready to be scheduled. To avoid changing this behaviour completely, there can be a toggle button next to "Success" that lets the user decide if he wants Airflow to automatically clear downstream tasks that are in "upstream_failed" state.
airflow/models/dag.py
scheduler_lock = Column(Boolean)
    
    pickle_id = Column(Integer)
    
    
    
    
    fileloc = Column(String(2000))
    
    owners = Column(String(2000))
    
    description = Column(Text)
    
    default_view = Column(String(25))
    
    schedule_interval = Column(Interval)
    
    tags = relationship('DagTag', cascade='all,delete-orphan', backref=backref('dag'))
    concurrency = Column(Integer, nullable=False)
    has_task_concurrency_limits = Column(Boolean, nullable=False)
    
    next_dagrun = Column(UtcDateTime)
    
    next_dagrun_create_after = Column(UtcDateTime)
    __table_args__ = (
        Index('idx_root_dag_id', root_dag_id, unique=False),
        Index('idx_next_dagrun_create_after', next_dagrun_create_after, unique=False),
    )
    NUM_DAGS_PER_DAGRUN_QUERY = conf.getint('scheduler', 'max_dagruns_to_create_per_loop', fallback=10)
    def __init__(self, **kwargs):