You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by je...@apache.org on 2022/02/17 21:39:30 UTC

[airflow] 39/43: Fix slow DAG deletion due to missing ``dag_id`` index for job table (#20282)

This is an automated email from the ASF dual-hosted git repository.

jedcunningham pushed a commit to branch v2-2-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 436f452ab8e32bfd5997e9650d1cfc490a41b0e4
Author: Kush <36...@users.noreply.github.com>
AuthorDate: Thu Dec 30 15:56:24 2021 +0530

    Fix slow DAG deletion due to missing ``dag_id`` index for job table (#20282)
    
    Fixes #20249
    
    (cherry picked from commit ac9f29da200c208bb52d412186c5a1b936eb0b5a)
---
 airflow/jobs/base_job.py                           |  1 +
 .../587bdf053233_adding_index_for_dag_id_in_job.py | 43 ++++++++++++++++++++++
 docs/apache-airflow/migrations-ref.rst             |  4 +-
 3 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/airflow/jobs/base_job.py b/airflow/jobs/base_job.py
index 745f248..174e4d5 100644
--- a/airflow/jobs/base_job.py
+++ b/airflow/jobs/base_job.py
@@ -71,6 +71,7 @@ class BaseJob(Base, LoggingMixin):
     __table_args__ = (
         Index('job_type_heart', job_type, latest_heartbeat),
         Index('idx_job_state_heartbeat', state, latest_heartbeat),
+        Index('idx_job_dag_id', dag_id),
     )
 
     task_instances_enqueued = relationship(
diff --git a/airflow/migrations/versions/587bdf053233_adding_index_for_dag_id_in_job.py b/airflow/migrations/versions/587bdf053233_adding_index_for_dag_id_in_job.py
new file mode 100644
index 0000000..3532fe9
--- /dev/null
+++ b/airflow/migrations/versions/587bdf053233_adding_index_for_dag_id_in_job.py
@@ -0,0 +1,43 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""adding index for dag_id in job
+
+Revision ID: 587bdf053233
+Revises: f9da662e7089
+Create Date: 2021-12-14 10:20:12.482940
+
+"""
+
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '587bdf053233'
+down_revision = 'f9da662e7089'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    """Apply adding index for dag_id in job"""
+    op.create_index('idx_job_dag_id', 'job', ['dag_id'], unique=False)
+
+
+def downgrade():
+    """Unapply adding index for dag_id in job"""
+    op.drop_index('idx_job_dag_id', table_name='job')
diff --git a/docs/apache-airflow/migrations-ref.rst b/docs/apache-airflow/migrations-ref.rst
index 8dc1a55..0eac329 100644
--- a/docs/apache-airflow/migrations-ref.rst
+++ b/docs/apache-airflow/migrations-ref.rst
@@ -23,7 +23,9 @@ Here's the list of all the Database Migrations that are executed via when you ru
 +--------------------------------+------------------+-----------------+---------------------------------------------------------------------------------------+
 | Revision ID                    | Revises ID       | Airflow Version | Description                                                                           |
 +--------------------------------+------------------+-----------------+---------------------------------------------------------------------------------------+
-| ``c381b21cb7e4`` (head)        | ``be2bfac3da23`` | ``2.2.4``       | Create a ``session`` table to store web session data                                  |
+| ``587bdf053233`` (head)        | ``f9da662e7089`` | ``2.3.0``       | Add index for ``dag_id`` column in ``job`` table.                                     |
++--------------------------------+------------------+-----------------+---------------------------------------------------------------------------------------+
+| ``c381b21cb7e4``               | ``be2bfac3da23`` | ``2.2.4``       | Create a ``session`` table to store web session data                                  |
 +--------------------------------+------------------+-----------------+---------------------------------------------------------------------------------------+
 | ``be2bfac3da23``               | ``7b2661a43ba3`` | ``2.2.3``       | Add has_import_errors column to DagModel                                              |
 +--------------------------------+------------------+-----------------+---------------------------------------------------------------------------------------+