This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new b99aa145c40 Add regression test for SERVER_TERMINATED precedence over
retry (#70774)
b99aa145c40 is described below
commit b99aa145c400d204aa72e84a05e5691136e28e46
Author: Henry Chen <[email protected]>
AuthorDate: Tue Aug 4 15:07:16 2026 +0800
Add regression test for SERVER_TERMINATED precedence over retry (#70774)
---
.../tests/task_sdk/execution_time/test_supervisor.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/task-sdk/tests/task_sdk/execution_time/test_supervisor.py
b/task-sdk/tests/task_sdk/execution_time/test_supervisor.py
index f777b2d5a8a..0741a71395e 100644
--- a/task-sdk/tests/task_sdk/execution_time/test_supervisor.py
+++ b/task-sdk/tests/task_sdk/execution_time/test_supervisor.py
@@ -160,6 +160,7 @@ from airflow.sdk.execution_time.comms import (
_ResponseFrame,
)
from airflow.sdk.execution_time.supervisor import (
+ SERVER_TERMINATED,
ActivitySubprocess,
InProcessSupervisorComms,
InProcessTestSupervisor,
@@ -3990,6 +3991,22 @@ class TestSignalRetryLogic:
assert mock_watched_subprocess.final_state ==
TaskInstanceState.UP_FOR_RETRY
+ def test_server_terminated_takes_precedence_over_retry(self, mocker):
+ """Test that a server-terminated task stays SERVER_TERMINATED even
with retries enabled."""
+ mock_watched_subprocess = ActivitySubprocess(
+ process_log=mocker.MagicMock(),
+ id=TI_ID,
+ pid=12345,
+ stdin=mocker.Mock(),
+ process=mocker.Mock(),
+ client=mocker.Mock(),
+ )
+ mock_watched_subprocess._exit_code = 1
+ mock_watched_subprocess._should_retry = True
+ mock_watched_subprocess._terminal_state = SERVER_TERMINATED
+
+ assert mock_watched_subprocess.final_state == SERVER_TERMINATED
+
def test_non_signal_exit_code_without_retry_goes_to_failed(self, mocker):
"""Test that non-signal exit codes without retries enabled go to
FAILED."""
mock_watched_subprocess = ActivitySubprocess(