Skip to content

Commit 57c722b

Browse files
authored
Fix the default value for store_dag_code (#9554)
related to #8255 (fixes the issue mentioned with `store_dag_code` but does not address Config interpolation) The default value of `store_dag_code` should be same as `store_serialized_dags` setting. But if the value is set it should use that value
1 parent 6b18ed4 commit 57c722b

File tree

7 files changed

+33
-8
lines changed

7 files changed

+33
-8
lines changed

airflow/config_templates/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,8 @@
338338
``store_serialized_dags`` setting.
339339
version_added: 1.10.10
340340
type: string
341-
example: ~
342-
default: "%(store_serialized_dags)s"
341+
example: "False"
342+
default: ~
343343
- name: max_num_rendered_ti_fields_per_task
344344
description: |
345345
Maximum number of Rendered Task Instance Fields (Template Fields) per task to store

airflow/config_templates/default_airflow.cfg

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ min_serialized_dag_update_interval = 30
195195
# If set to True, Webserver reads file contents from DB instead of
196196
# trying to access files in a DAG folder. Defaults to same as the
197197
# ``store_serialized_dags`` setting.
198-
store_dag_code = %(store_serialized_dags)s
198+
# Example: store_dag_code = False
199+
# store_dag_code =
199200

200201
# Maximum number of Rendered Task Instance Fields (Template Fields) per task to store
201202
# in the Database.

airflow/models/dag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1589,7 +1589,7 @@ def bulk_sync_to_db(cls, dags: Collection["DAG"], sync_time=None, session=None):
15891589
orm_dag.tags.append(dag_tag_orm)
15901590
session.add(dag_tag_orm)
15911591

1592-
if conf.getboolean('core', 'store_dag_code', fallback=False):
1592+
if settings.STORE_DAG_CODE:
15931593
DagCode.bulk_sync_to_db([dag.fileloc for dag in orm_dags])
15941594

15951595
session.commit()

airflow/models/dagcode.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
from sqlalchemy import BigInteger, Column, String, UnicodeText, and_, exists
2424

25-
from airflow.configuration import conf
2625
from airflow.exceptions import AirflowException, DagCodeNotFound
2726
from airflow.models import Base
27+
from airflow.settings import STORE_DAG_CODE
2828
from airflow.utils import timezone
2929
from airflow.utils.file import correct_maybe_zipped, open_maybe_zipped
3030
from airflow.utils.session import provide_session
@@ -181,7 +181,7 @@ def code(cls, fileloc) -> str:
181181
182182
:return: source code as string
183183
"""
184-
if conf.getboolean('core', 'store_dag_code', fallback=False):
184+
if STORE_DAG_CODE:
185185
return cls._get_code_from_db(fileloc)
186186
else:
187187
return cls._get_code_from_file(fileloc)

airflow/settings.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,11 @@ def initialize():
340340
MIN_SERIALIZED_DAG_UPDATE_INTERVAL = conf.getint(
341341
'core', 'min_serialized_dag_update_interval', fallback=30)
342342

343+
# Whether to persist DAG files code in DB. If set to True, Webserver reads file contents
344+
# from DB instead of trying to access files in a DAG folder.
345+
# Defaults to same as the store_serialized_dags setting.
346+
STORE_DAG_CODE = conf.getboolean("core", "store_dag_code", fallback=STORE_SERIALIZED_DAGS)
347+
343348
# If donot_modify_handlers=True, we do not modify logging handlers in task_run command
344349
# If the flag is set to False, we remove all handlers from the root logger
345350
# and add all handlers from 'airflow.task' logger to the root Logger. This is done

airflow/utils/dag_processing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
from airflow.exceptions import AirflowException
4242
from airflow.models import errors
4343
from airflow.models.taskinstance import SimpleTaskInstance, TaskInstance
44-
from airflow.settings import STORE_SERIALIZED_DAGS
44+
from airflow.settings import STORE_DAG_CODE, STORE_SERIALIZED_DAGS
4545
from airflow.stats import Stats
4646
from airflow.utils import timezone
4747
from airflow.utils.file import list_py_file_paths
@@ -631,7 +631,7 @@ def __init__(self,
631631
conf.getint('scheduler', 'scheduler_zombie_task_threshold'))
632632

633633
# Should store dag file source in a database?
634-
self.store_dag_code = conf.getboolean('core', 'store_dag_code', fallback=False)
634+
self.store_dag_code = STORE_DAG_CODE
635635
# Map from file path to the processor
636636
self._processors: Dict[str, AbstractDagFileProcessorProcess] = {}
637637

tests/test_configuration.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,3 +599,22 @@ def test_run_command(self):
599599

600600
def test_confirm_unittest_mod(self):
601601
self.assertTrue(conf.get('core', 'unit_test_mode'))
602+
603+
@conf_vars({("core", "store_serialized_dags"): "True"})
604+
def test_store_dag_code_default_config(self):
605+
store_serialized_dags = conf.getboolean('core', 'store_serialized_dags', fallback=False)
606+
store_dag_code = conf.getboolean("core", "store_dag_code", fallback=store_serialized_dags)
607+
self.assertFalse(conf.has_option("core", "store_dag_code"))
608+
self.assertTrue(store_serialized_dags)
609+
self.assertTrue(store_dag_code)
610+
611+
@conf_vars({
612+
("core", "store_serialized_dags"): "True",
613+
("core", "store_dag_code"): "False"
614+
})
615+
def test_store_dag_code_config_when_set(self):
616+
store_serialized_dags = conf.getboolean('core', 'store_serialized_dags', fallback=False)
617+
store_dag_code = conf.getboolean("core", "store_dag_code", fallback=store_serialized_dags)
618+
self.assertTrue(conf.has_option("core", "store_dag_code"))
619+
self.assertTrue(store_serialized_dags)
620+
self.assertFalse(store_dag_code)

0 commit comments

Comments
 (0)