feng-tao commented on a change in pull request #3596: [AIRFLOW-2747] Explicit
re-schedule of sensors
URL: https://github.com/apache/incubator-airflow/pull/3596#discussion_r218218409
##########
File path: airflow/www/views.py
##########
@@ -1927,21 +1927,49 @@ def gantt(self, session=None):
TF.execution_date == ti.execution_date)
.all()
) for ti in tis]))
- tis_with_fails = sorted(tis + ti_fails, key=lambda ti: ti.start_date)
+ TR = models.TaskReschedule
+ ti_reschedules = list(itertools.chain(*[(
+ session
+ .query(TR)
+ .filter(TR.dag_id == ti.dag_id,
+ TR.task_id == ti.task_id,
+ TR.execution_date == ti.execution_date)
+ .all()
+ ) for ti in tis]))
+ # determine bars to show in the gantt chart
+ # all reschedules of one attempt are combinded into one bar
+ gantt_bar_items = []
+ for task_id, items in itertools.groupby(
+ sorted(tis + ti_fails + ti_reschedules, key=lambda ti:
ti.task_id),
+ key=lambda ti: ti.task_id):
+ start_date = None
+ for i in sorted(items, key=lambda ti: ti.start_date):
+ start_date = start_date or i.start_date
+ end_date = i.end_date or timezone.utcnow()
+ if type(i) == models.TaskInstance:
+ gantt_bar_items.append((task_id, start_date, end_date,
i.state))
+ start_date = None
+ elif type(i) == TF and (len(gantt_bar_items) == 0 or
+ end_date != gantt_bar_items[-1][2]):
+ gantt_bar_items.append((task_id, start_date, end_date,
State.FAILED))
+ start_date = None
tasks = []
- for ti in tis_with_fails:
- end_date = ti.end_date if ti.end_date else timezone.utcnow()
- state = ti.state if type(ti) == models.TaskInstance else
State.FAILED
+ for gantt_bar_item in gantt_bar_items:
+ print(gantt_bar_item)
Review comment:
debug line?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services