MaiHoangViet1809 opened a new issue, #27952:
URL: https://github.com/apache/airflow/issues/27952

   ### Apache Airflow version
   
   2.4.3
   
   ### What happened
   
   when use output from task decorator as parameter (external_task_ids) in 
ExternalTaskSensor, it show up this log:
   Broken DAG: [*******/airflow/dags/TEST_NEW_PIPELINE.py] Traceback (most 
recent call last):
     File 
"*******/env3.10.5/lib/python3.10/site-packages/airflow/models/baseoperator.py",
 line 408, in apply_defaults
       result = func(self, **kwargs, default_args=default_args)
     File 
"*******/env3.10.5/lib/python3.10/site-packages/airflow/sensors/external_task.py",
 line 164, in __init__
       if external_task_ids and len(external_task_ids) > 
len(set(external_task_ids)):
   TypeError: object of type 'PlainXComArg' has no len()
   
   
   
   ### What you think should happen instead
   
   this document 
https://airflow.apache.org/docs/apache-airflow/stable/tutorial/taskflow.html
   show that we can use it without any warning, note about it.
   
   I think need to fix the line in error log:
   "if external_task_ids and len(external_task_ids) > 
len(set(external_task_ids)):"
   
   ### How to reproduce
   
   ```
   from airflow.decorators import dag, task
   from airflow.operators.python import get_current_context
   
   from airflow.sensors.external_task import ExternalTaskSensor
   from datetime import datetime
   
   configure = {"dag_id": "test_new_skeleton",
                       "schedule": None,
                       "start_date": datetime(2022,1,1),
   }
   
   @task
   def preprocess_dependency() -> list:
       return ["random-task-name"]
   
   @dag(**configure)
   def pipeline(): 
       t_preprocess = preprocess_dependency()
       task_dependency = ExternalTaskSensor(task_id=f"Check_Dependency",
                                                                      
external_dag_id='random-dag-name-that-exist',
                                                                      
external_task_ids=t_preprocess ,
                                                                      
poke_interval=60,
                                                                      
mode="reschedule",
                                                                      
timeout=172800,
                                                                      
allowed_states=['success'],
                                                                      
failed_states=['failed', 'skipped'],
                                                                      
check_existence=True,)
   
   
   dag = pipeline()
   ```
   
   
   ### Operating System
   
   REHL 7
   
   ### Versions of Apache Airflow Providers
   
   _No response_
   
   ### Deployment
   
   Virtualenv installation
   
   ### Deployment details
   
   _No response_
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to