This is an automated email from the ASF dual-hosted git repository. ashb pushed a commit to branch store-historic-ti-ownership-data in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 781b212c3c5cb2dc3c579d11d79f1e2b05344dfd Author: Ash Berlin-Taylor <[email protected]> AuthorDate: Mon Oct 5 15:01:18 2026 +0100 fixup! Keep retired task attempts and their data under the attempt UUID Fix provider and plugin tests for the removed history model and rc rule --- airflow-core/tests/unit/plugins/test_plugins_manager.py | 2 +- .../amazon/aws/executors/batch/test_batch_executor.py | 15 +++++++++++---- .../unit/amazon/aws/executors/ecs/test_ecs_executor.py | 15 +++++++++++---- scripts/cov/core_coverage.py | 1 - 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/airflow-core/tests/unit/plugins/test_plugins_manager.py b/airflow-core/tests/unit/plugins/test_plugins_manager.py index c34aab0991b..f4f361481cc 100644 --- a/airflow-core/tests/unit/plugins/test_plugins_manager.py +++ b/airflow-core/tests/unit/plugins/test_plugins_manager.py @@ -1067,7 +1067,7 @@ class TestExtraLinkTeamVisibility: ("version", "direct_url", "allowed"), [ pytest.param("0.10.0", None, False, id="released-0.10.0"), - pytest.param("1.0.0rc1", None, False, id="released-1.0.0rc1"), + pytest.param("1.0.0rc1", None, True, id="release-candidate-1.0.0rc1"), pytest.param("1.0.0", None, True, id="released-1.0.0"), pytest.param("1.1.0", None, True, id="released-1.1.0"), pytest.param("0.10.0", {"dir_info": {"editable": True}}, True, id="editable-source-install"), diff --git a/providers/amazon/tests/unit/amazon/aws/executors/batch/test_batch_executor.py b/providers/amazon/tests/unit/amazon/aws/executors/batch/test_batch_executor.py index 05b5a15b006..0f7802dc0cf 100644 --- a/providers/amazon/tests/unit/amazon/aws/executors/batch/test_batch_executor.py +++ b/providers/amazon/tests/unit/amazon/aws/executors/batch/test_batch_executor.py @@ -59,7 +59,9 @@ from tests_common.test_utils.version_compat import ( if hasattr(BaseExecutor, "get_task_key"): from airflow.executors.workloads.types import TaskInstanceUuid - from airflow.models.taskinstancehistory import TaskInstanceHistory + + if not AIRFLOW_V_3_4_PLUS: + from airflow.models.taskinstancehistory import TaskInstanceHistory airflow_version = VersionInfo(*map(int, airflow_version_str.split(".")[:3])) ARN1 = "arn1" @@ -1455,9 +1457,14 @@ class TestTaskIdentity: session.commit() old_id = ti.id - ti.handle_failure("worker lost", session=session) - session.refresh(ti) - history = session.get(TaskInstanceHistory, old_id) + if AIRFLOW_V_3_4_PLUS: + successor = ti.handle_failure("worker lost", session=session) + history = session.get(TaskInstance, old_id) + ti = successor + else: + ti.handle_failure("worker lost", session=session) + session.refresh(ti) + history = session.get(TaskInstanceHistory, old_id) assert ti.state == TaskInstanceState.UP_FOR_RETRY assert ti.id != old_id diff --git a/providers/amazon/tests/unit/amazon/aws/executors/ecs/test_ecs_executor.py b/providers/amazon/tests/unit/amazon/aws/executors/ecs/test_ecs_executor.py index 155abf46ba5..495062d1def 100644 --- a/providers/amazon/tests/unit/amazon/aws/executors/ecs/test_ecs_executor.py +++ b/providers/amazon/tests/unit/amazon/aws/executors/ecs/test_ecs_executor.py @@ -68,7 +68,9 @@ from tests_common.test_utils.version_compat import ( if hasattr(BaseExecutor, "get_task_key"): from airflow.executors.workloads.types import TaskInstanceUuid - from airflow.models.taskinstancehistory import TaskInstanceHistory + + if not AIRFLOW_V_3_4_PLUS: + from airflow.models.taskinstancehistory import TaskInstanceHistory airflow_version = VersionInfo(*map(int, airflow_version_str.split(".")[:3])) @@ -2233,9 +2235,14 @@ class TestTaskIdentity: session.commit() old_id = ti.id - ti.handle_failure("worker lost", session=session) - session.refresh(ti) - history = session.get(TaskInstanceHistory, old_id) + if AIRFLOW_V_3_4_PLUS: + successor = ti.handle_failure("worker lost", session=session) + history = session.get(TaskInstance, old_id) + ti = successor + else: + ti.handle_failure("worker lost", session=session) + session.refresh(ti) + history = session.get(TaskInstanceHistory, old_id) assert ti.state == TaskInstanceState.UP_FOR_RETRY assert ti.id != old_id diff --git a/scripts/cov/core_coverage.py b/scripts/cov/core_coverage.py index cf7cf49f8e4..9995b008069 100644 --- a/scripts/cov/core_coverage.py +++ b/scripts/cov/core_coverage.py @@ -61,7 +61,6 @@ files_not_fully_covered = [ "airflow-core/src/airflow/models/renderedtifields.py", "airflow-core/src/airflow/models/serialized_dag.py", "airflow-core/src/airflow/models/taskinstance.py", - "airflow-core/src/airflow/models/taskinstancehistory.py", "airflow-core/src/airflow/models/taskinstancekey.py", "airflow-core/src/airflow/models/taskmixin.py", "airflow-core/src/airflow/models/trigger.py",
