Restore operator extra links for mapped tasks #50238
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes: API error on trying to view details tab of a mapped task instance to access extra links
Problem
The API server reports error when trying to access extra links defined for mapped tasks. Error stack:
Resolution
The issue happens due to moving code during #46613, the code that is relevant to API server was moved from abstarct operator => serialised operators.
This worked in most cases but started failing for mapped operators because mapped operators inherited from abstarctoeprators where this code was defined. Code: https://github.com/apache/airflow/pull/46613/files#diff-f373d874912ccfa03918e853ad15aa91d6bfaa1ee75f1676f78c8a756f332ed0L160-L217
The correct fix here would be to have
get_extra_links
defined on the mapped operator, but not at the sdk side which is defn only, but on the execution side, so basically inairflow.models.mappedoperator.MappedOperator
.Testing
Defined plugin:
This plugin adds extra links to all python operators, either via taskflow or not.
Using DAG:
Run the dag:

Access the extra links for mapped task first:

Access the extra links for the normal task second:

^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rst
or{issue_number}.significant.rst
, in airflow-core/newsfragments.