ChickenBenny commented on PR #75387:
URL: https://github.com/apache/airflow/pull/75387#issuecomment-6362737233

   Thanks! Agreed that a worker-only `[core] default_task_execution_timeout` 
silently stopping is the breaking part worth avoiding.
   
   I didn't make the worker config take precedence over `TIRunContext`, because 
the worker cannot tell whether the run-context value is the default or set by 
the Dag: the Dag processor writes the resolved default into the serialized task 
itself, so it looks the same as an explicit `execution_timeout`. "Worker config 
first" would override explicit values, and avoiding that would need a new 
`TIRunContext` field plus a Cadwyn version change.
   
   Instead, the worker config is used only when the run context has no timeout:
   
   - **Runner**: uses `TIRunContext.execution_timeout`. If it is `None` and the 
re-parsed task carries the worker's default, it uses the worker's default and 
logs a deprecation warning.
   - **Supervisor**: on `StartExecutionTimeout`, if the run context has no 
timeout, it reads its own `[core] default_task_execution_timeout`. Both sides 
compute `max(default.total_seconds(), 0.0)` from the same config, so they 
always agree, and `StartExecutionTimeout` still carries no value.
   
   The "equals the worker's default" check matters: the re-parsed value can 
also come from a Dag file changed since it was serialized, or from 
`pre_execute`, which the supervisor cannot see. In those cases there is no 
fallback, so runner and supervisor stay consistent.


-- 
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