The GitHub Actions job "Tests (AMD)" on 
airflow.git/fix/65400-heartbeat-callback-type has succeeded.
Run started by GitHub user 1fanwang (triggered by 1fanwang).

Head commit for run:
608231dff696ea0602441649cdc77ad6a0bd457a / 1fanwang <[email protected]>
Fix scheduler firing on_failure_callback for heartbeat-timed-out retries

When a worker stops heartbeating (OOMKill, node eviction), the scheduler's
``_purge_task_instances_without_heartbeats`` built a ``TaskCallbackRequest``
without ``task_callback_type``. The Dag processor's task-callback dispatch
branches on that field: ``UP_FOR_RETRY`` runs ``on_retry_callback``, anything
else (including ``None``) runs ``on_failure_callback``. So heartbeat-timeout
cleanup always fired ``on_failure_callback`` even when the task still had
retries remaining, producing spurious failure alerts for tasks that
ultimately succeeded on retry.

Set ``task_callback_type`` from a direct ``max_tries`` / ``try_number``
check. The canonical pattern elsewhere in the file uses
``ti.is_eligible_to_retry()``, but that helper has a "task not loaded"
fallback (``return self.try_number <= self.max_tries``) that misreports
retry-eligibility for ``retries=0`` tasks when ``ti.task`` isn't eagerly
loaded — which is exactly the case in this code path.

closes: #65400

Co-authored-by: kimhaggie <[email protected]>
Signed-off-by: 1fanwang <[email protected]>

Report URL: https://github.com/apache/airflow/actions/runs/25782589387

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to