diff --git a/airflow/models/serialized_dag.py b/airflow/models/serialized_dag.py index 71a3de413ceba..59d2567188462 100644 --- a/airflow/models/serialized_dag.py +++ b/airflow/models/serialized_dag.py @@ -280,7 +280,7 @@ def get_last_updated_datetime(cls, dag_id: str, session: Session = None) -> Opti @classmethod @provide_session - def get_max_last_updated_datetime(cls, session: Session = None) -> datetime: + def get_max_last_updated_datetime(cls, session: Session = None) -> Optional[datetime]: """ Get the maximum date when any DAG was last updated in serialized_dag table @@ -291,7 +291,7 @@ def get_max_last_updated_datetime(cls, session: Session = None) -> datetime: @classmethod @provide_session - def get_latest_version_hash(cls, dag_id: str, session: Session = None) -> str: + def get_latest_version_hash(cls, dag_id: str, session: Session = None) -> Optional[str]: """ Get the latest DAG version for a given DAG ID. @@ -299,7 +299,7 @@ def get_latest_version_hash(cls, dag_id: str, session: Session = None) -> str: :type dag_id: str :param session: ORM Session :type session: Session - :return: DAG Hash + :return: DAG Hash, or None if the DAG is not found :rtype: str | None """ return session.query(cls.dag_hash).filter(cls.dag_id == dag_id).scalar() diff --git a/airflow/www/views.py b/airflow/www/views.py index 009bcac87b187..a1e61721f28ae 100644 --- a/airflow/www/views.py +++ b/airflow/www/views.py @@ -4093,7 +4093,8 @@ def list(self): title = "DAG Dependencies" if timezone.utcnow() > self.last_refresh + self.refresh_interval: - if SerializedDagModel.get_max_last_updated_datetime() > self.last_refresh: + max_last_updated = SerializedDagModel.get_max_last_updated_datetime() + if max_last_updated is None or max_last_updated > self.last_refresh: self._calculate_graph() self.last_refresh = timezone.utcnow()