boushphong commented on issue #31555:
URL: https://github.com/apache/airflow/issues/31555#issuecomment-1808817295

   I just tried to fix this.
   I have no clue how `dag_run.end_date` field here is always equal to the 
`timezone.utcnow()` to be honest. Even before assigning  `state == 
DagRunState.RUNNING:` at line **368**. This seems to be the problem, it just 
doesn't get the `end_date` from it's latest run but always resolves to the 
value of `timezone.utcnow()`. Hence the `session.merge(dagrun)` will always 
alter the `end_date`.
   
https://github.com/apache/airflow/blob/270e2190b8bd15594af5a936fd54d35cb3a3b8ac/airflow/api/common/mark_tasks.py#L360-L369
   
   perhaps someone could pick this up from my clue maybe. Maybe the code below 
would work after one could resolve the above problem. I suspect the problem 
comes from the `@provide_session` decorator. But I'm not too sure.
   ```python
   if state == DagRunState.RUNNING: 
        dag_run.start_date = timezone.utcnow() 
        dag_run.end_date = None 
   elif state == DagRunState.QUEUE: 
        dag_run.end_date = timezone.utcnow()
   session.merge(dagrun)
   ```


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