Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions task-sdk/src/airflow/sdk/execution_time/task_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -1712,9 +1712,10 @@ def _on_term(signum, frame):
log.info("::group::Post Execute")
if e.args:
log.info("Skipping task.", reason=e.args[0])
ti.end_date = datetime.now(tz=UTC)
msg = TaskState(
state=TaskInstanceState.SKIPPED,
end_date=datetime.now(tz=UTC),
end_date=ti.end_date,
rendered_map_index=ti.rendered_map_index,
)
state = TaskInstanceState.SKIPPED
Expand Down Expand Up @@ -2108,22 +2109,23 @@ def _handle_trigger_dag_run(
)

if isinstance(comms_msg, ErrorResponse) and comms_msg.error == ErrorType.DAGRUN_ALREADY_EXISTS:
ti.end_date = datetime.now(tz=UTC)
if drte.skip_when_already_exists:
log.info(
"Dag Run already exists, skipping task as skip_when_already_exists is set to True.",
dag_id=drte.trigger_dag_id,
)
msg = TaskState(
state=TaskInstanceState.SKIPPED,
end_date=datetime.now(tz=UTC),
end_date=ti.end_date,
rendered_map_index=ti.rendered_map_index,
)
state = TaskInstanceState.SKIPPED
else:
log.error("Dag Run already exists, marking task as failed.", dag_id=drte.trigger_dag_id)
msg = TaskState(
state=TaskInstanceState.FAILED,
end_date=datetime.now(tz=UTC),
end_date=ti.end_date,
rendered_map_index=ti.rendered_map_index,
)
state = TaskInstanceState.FAILED
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1997,6 +1997,7 @@ def test_run_basic_skipped(time_machine, create_runtime_ti, mock_supervisor_comm
run(ti, context=ti.get_template_context(), log=mock.MagicMock())

assert ti.state == TaskInstanceState.SKIPPED
assert ti.end_date == instant

mock_supervisor_comms.send.assert_called_with(
TaskState(state=TaskInstanceState.SKIPPED, end_date=instant)
Expand Down Expand Up @@ -5419,6 +5420,7 @@ def __init__(self):
self.state = []
self.component = None
self.error = None
self.end_date = None

@hookimpl
def on_starting(self, component):
Expand All @@ -5440,6 +5442,7 @@ def on_task_instance_failed(self, previous_state, task_instance, error):
@hookimpl
def on_task_instance_skipped(self, previous_state, task_instance):
self.state.append(TaskInstanceState.SKIPPED)
self.end_date = task_instance.end_date

@hookimpl
def before_stopping(self, component):
Expand Down Expand Up @@ -5659,10 +5662,12 @@ def execute(self, context):
)
log = mock.MagicMock()
context = runtime_ti.get_template_context()
state, _, _ = run(runtime_ti, context, log)
state, msg, _ = run(runtime_ti, context, log)
finalize(runtime_ti, state, context, log)

assert listener.state == [TaskInstanceState.RUNNING, TaskInstanceState.SKIPPED]
assert listener.end_date is not None
assert listener.end_date == msg.end_date

def test_listener_access_outlet_event_on_running_and_success(
self, mocked_parse, mock_supervisor_comms, listener_manager
Expand Down Expand Up @@ -6226,6 +6231,8 @@ def test_handle_trigger_dag_run_conflict(

assert state == expected_state
assert msg.state == expected_state
assert ti.end_date is not None
assert ti.end_date == msg.end_date

expected_calls = [
mock.call.send(
Expand Down
Loading