peachchen0716 commented on code in PR #64816:
URL: https://github.com/apache/airflow/pull/64816#discussion_r3069079608


##########
airflow-core/src/airflow/api_fastapi/execution_api/routes/task_instances.py:
##########
@@ -172,6 +172,20 @@ def ti_run(
     if ti.next_kwargs:
         data.pop("start_date")
         log.debug("Removed start_date from update as task is resuming from 
deferral")
+    elif "start_date" in data:
+        # Restore original start_date for rescheduled tasks. The supervisor 
always sends
+        # start_date=utcnow(), but for a sensor in reschedule mode the true 
start is when
+        # the first poke ran, recorded in TaskReschedule. Without this, every 
re-poke
+        # resets start_date and inflates dagrun.first_task_scheduling_delay.
+        first_reschedule_start_date = session.scalar(
+            select(TaskReschedule.start_date)
+            .where(TaskReschedule.ti_id == task_instance_id)
+            .order_by(TaskReschedule.id.asc())

Review Comment:
   In Airflow 3 this shouldn't be possible. prepare_db_for_next_try deletes all 
TaskReschedule rows for the current ti_id                                       
                                                                      
   
   The proposed order by also doesn't use proper index, since start_date is not 
indexed.



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