Skip to content

Fix mapped tasks does not validate task_id - #70135

Open
Andrushika wants to merge 1 commit into
apache:mainfrom
Andrushika:validate-mapped-task-id
Open

Fix mapped tasks does not validate task_id#70135
Andrushika wants to merge 1 commit into
apache:mainfrom
Andrushika:validate-mapped-task-id

Conversation

@Andrushika

@AndrushikaAndrushika commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Validate task_id for mapped tasks

Why

A regular task validates its task_id in BaseOperator.__init__. A mapped task is built on a path that skips __init__, so its id was never validated. A regular task and a mapped task then accept different sets of ids, breaking the invariant that every task_id is validated:

MyOperator(task_id="bad*id") # raisesMyOperator.partial(task_id="bad*id").expand(...) # passed silently

The taskflow @task mapped form had the same gap.

What

Validate the id in both mapped paths, at the point where the final id is known (after the task-group prefix and unique-suffix), matching BaseOperator.__init__. Valid ids are unaffected. Tests lock that the final id is validated, not the raw one.

related: #69965, #69937

Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Generated-by: Claude Code Opus 4.8 following the guidelines


  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

A regular task validates its task_id in BaseOperator.__init__, but a
mapped task is built through a different path that skips __init__, so its
task_id was never checked. An invalid id such as "bad*id" passed
silently in .partial().expand() and in the taskflow @task mapped form,
only to fail later where the id is used. Validate the id in both mapped
paths so it is rejected at parse time like a regular task.
@Andrushika
Andrushikaforce-pushed the validate-mapped-task-id branch from d5ee49a to 581708cCompareJuly 20, 2026 14:46
@AndrushikaAndrushika changed the title Validate task_id for mapped tasksFix mapped tasks does not validate task_idJul 20, 2026
@Andrushika

Copy link
Copy Markdown
ContributorAuthor

Hi @kaxil, could you please take a look if you have time? Thanks a lot!

@potiukpotiuk added the ready for maintainer review Set after triaging when all criteria pass. label Aug 13, 2026
@Andrushika

Copy link
Copy Markdown
ContributorAuthor

Hi @ashb, if it's possible, could you please take a look on this PR? Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:task-sdkready for maintainer reviewSet after triaging when all criteria pass.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Andrushika@potiuk