[
https://issues.apache.org/jira/browse/AIRFLOW-2099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16566463#comment-16566463
]
ASF subversion and git services commented on AIRFLOW-2099:
----------------------------------------------------------
Commit a4b9aa386c93d8894a41e986da91d3841bb37f43 in incubator-airflow's branch
refs/heads/master from Matt Revell
[ https://gitbox.apache.org/repos/asf?p=incubator-airflow.git;h=a4b9aa3 ]
[AIRFLOW-2099] Handle getsource() calls gracefully
There are several scenarios where Task Instance view tries to render
Python callables where 'x' is not the correct artefact to target.
This commit adds a helper fuction to test for known scenarios, and
derives the source from the correc artefact or as a default returns 'No
source available for <type>'. This means that even in unknown or
unfixable edge cases, the Task Instance view still renders instead of
displaying an exception.
Closes #3571 from night0wl/AIRFLOW-2099_task_view_type_check
> Task details cannot be shown when PythonOperator calls partial function /
> class instance with __call__
> ------------------------------------------------------------------------------------------------------
>
> Key: AIRFLOW-2099
> URL: https://issues.apache.org/jira/browse/AIRFLOW-2099
> Project: Apache Airflow
> Issue Type: Bug
> Components: ui
> Affects Versions: Airflow 1.8
> Reporter: Matthew Revell
> Assignee: Matthew Revell
> Priority: Minor
>
> There are several scenarios where the inspect.getsource() method fails with:
> {{object at 0x00000000> is not a module, class, method, function, traceback,
> frame, or code object}}
> One such scenario is described in
> [AIRFLOW-1027|https://issues.apache.org/jira/browse/AIRFLOW-1027] where a
> partial function is used. Another is when an instance of a class which
> implements __call__() is used.
> Example:
> {{class MyClass(object):}}
> {{ def __init__(self):}}
> {{ pass}}
> {{ def __call__(self):}}
> {{ pass}}
> {{my_class = MyClass()}}
> {{dag_task = PythonOperator(}}
> {{ task_id='dag_task',}}
> {{ dag=dag, }}
> {{ python_callable=my_class,}}
> {{)}}
> There exists a PR for AIRFLOW-1027, however, this fix does not address this
> other scenario, and also does not guard against any other edge cases which my
> result in this error in future.
> A better solution would be to catch known scenarios with work arounds, and
> default to reporting that the source is unavailable for unknown cases. This
> would at least display the Task Instance details in every case.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)