github-actions[bot] opened a new pull request, #69824:
URL: https://github.com/apache/airflow/pull/69824

   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 ``ti.is_eligible_to_retry()``, the canonical
   retry-eligibility predicate, guarded by ``max_tries > 0``. The guard covers
   the one gap the predicate has here: this path doesn't load ``ti.task``, so 
the
   predicate falls back to ``try_number <= max_tries`` and drops the
   retries-configured check its task-loaded branch applies. Deferring to the
   predicate also keeps a ``RESTARTING`` task (cleared while running) retry-
   eligible past ``max_tries``, where a hand-rolled ``try_number <= max_tries``
   check would have fired ``on_failure_callback``.
   
   closes: #65400
   (cherry picked from commit f2403ccb58b32ae9a073b70d6648c11447d6c9b0)
   
   Co-authored-by: Stefan Wang <[email protected]>
   Signed-off-by: 1fanwang <[email protected]>
   Co-authored-by: kimhaggie <[email protected]>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to