Skip to content

Commit ed0108a

Browse files
jason-udacityAlice Berard
authored and
Alice Berard
committed
[AIRFLOW-3238] Fix models.DAG to deactivate unknown DAGs on initdb (apache#4073)
Unknown dags are now deactivated on initdb
1 parent 4a06696 commit ed0108a

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

airflow/models.py

+1
Original file line numberDiff line numberDiff line change
@@ -4358,6 +4358,7 @@ def deactivate_unknown_dags(active_dag_ids, session=None):
43584358
DagModel).filter(~DagModel.dag_id.in_(active_dag_ids)).all():
43594359
dag.is_active = False
43604360
session.merge(dag)
4361+
session.commit()
43614362

43624363
@staticmethod
43634364
@provide_session

tests/models.py

+25
Original file line numberDiff line numberDiff line change
@@ -1691,6 +1691,31 @@ def test_kill_zombies(self, mock_ti):
16911691
configuration.getboolean('core', 'unit_test_mode'),
16921692
ANY)
16931693

1694+
def test_deactivate_unknown_dags(self):
1695+
"""
1696+
Test that dag_ids not passed into deactivate_unknown_dags
1697+
are deactivated when function is invoked
1698+
"""
1699+
dagbag = models.DagBag(include_examples=True)
1700+
expected_active_dags = dagbag.dags.keys()
1701+
1702+
session = settings.Session
1703+
session.add(DagModel(dag_id='test_deactivate_unknown_dags', is_active=True))
1704+
session.commit()
1705+
1706+
models.DAG.deactivate_unknown_dags(expected_active_dags)
1707+
1708+
for dag in session.query(DagModel).all():
1709+
if dag.dag_id in expected_active_dags:
1710+
self.assertTrue(dag.is_active)
1711+
else:
1712+
self.assertEquals(dag.dag_id, 'test_deactivate_unknown_dags')
1713+
self.assertFalse(dag.is_active)
1714+
1715+
# clean up
1716+
session.query(DagModel).filter(DagModel.dag_id == 'test_deactivate_unknown_dags').delete()
1717+
session.commit()
1718+
16941719

16951720
class TaskInstanceTest(unittest.TestCase):
16961721

0 commit comments

Comments
 (0)