-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Description
Apache Airflow version
main (development)
If "Other Airflow 2 version" selected, which one?
No response
What happened?
If a HITL operator has a execution_timeout and default set and around same time we provided input from UI we will get 409 and task will fail
[2025-08-29, 11:35:54] ERROR - Trigger failed: Traceback (most recent call last): File "/opt/airflow/airflow-core/src/airflow/jobs/triggerer_job_runner.py", line 993, in cleanup_finished_triggers result = details["task"].result() File "/opt/airflow/airflow-core/src/airflow/jobs/triggerer_job_runner.py", line 1102, in run_trigger async for event in trigger.run(): File "/opt/airflow/providers/standard/src/airflow/providers/standard/triggers/hitl.py", line 110, in run await sync_to_async(update_hitl_detail_response)( File "/usr/local/lib/python3.10/site-packages/asgiref/sync.py", line 439, in __call__ ret = await asyncio.shield(exec_coro) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/site-packages/asgiref/sync.py", line 493, in thread_handler return func(*args, **kwargs) File "/opt/airflow/task-sdk/src/airflow/sdk/execution_time/hitl.py", line 66, in update_hitl_detail_response response = SUPERVISOR_COMMS.send( File "/opt/airflow/airflow-core/src/airflow/jobs/triggerer_job_runner.py", line 770, in send return async_to_sync(self.asend)(msg) File "/usr/local/lib/python3.10/site-packages/asgiref/sync.py", line 262, in __call__ return call_result.result() File "/usr/local/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() File "/usr/local/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/usr/local/lib/python3.10/site-packages/asgiref/sync.py", line 302, in main_wrap result = await awaitable File "/opt/airflow/airflow-core/src/airflow/jobs/triggerer_job_runner.py", line 796, in asend return await self._aget_response(frame.id) File "/opt/airflow/airflow-core/src/airflow/jobs/triggerer_job_runner.py", line 787, in _aget_response return self._from_frame(frame) File "/opt/airflow/task-sdk/src/airflow/sdk/execution_time/comms.py", line 258, in _from_frame raise AirflowRuntimeError(error=err) airflow.sdk.exceptions.AirflowRuntimeError: API_SERVER_ERROR: {'status_code': 409, 'message': 'Human-in-the-loop detail for Task Instance with id 0198f46d-61bd-715d-9d0e-0199d9408c32 already exists.', 'detail': {'detail': 'Human-in-the-loop detail for Task Instance with id 0198f46d-61bd-715d-9d0e-0199d9408c32 already exists.'}}
What you think should happen instead?
We should block input from UI maybe
How to reproduce
Use example_hitl_operator example DAG and perform action from UI around execution_timeout
Operating System
linux
Versions of Apache Airflow Providers
No response
Deployment
Official Apache Airflow Helm Chart
Deployment details
No response
Anything else?
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
Metadata
Metadata
Assignees
Labels
Type
Projects
Status