You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "gmarendaz (via GitHub)" <gi...@apache.org> on 2023/11/30 12:02:54 UTC

[I] Airflow DAG not working anymore on Airflow 2.7.3 [airflow]

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

   ### Apache Airflow version
   
   2.7.3
   
   ### What happened
   
   I was in part of the migration of Apache Airflow in a Ubuntu environment from a Windows WSL environment.
   DAG was working correctly before on Windows WSL but not on Ubuntu.
   
   ### What you think should happen instead
   
   The code should work as expected because the file and DAG structure did not change.
   
   ### How to reproduce
   
   The problem can't be reprocued as it is in my environment only
   
   ### Operating System
   
   Ubuntu 22.04.3 LTS
   
   ### Versions of Apache Airflow Providers
   
   ai-operator @ file:///home/apache/airflow/packages/ai_package/dist/ai_operator-0.0.0-py3-none-any.whl
   aiohttp==3.8.6
   aiosignal==1.3.1
   alembic==1.12.1
   annotated-types==0.6.0
   anyio==4.0.0
   apache-airflow==2.7.3
   apache-airflow-providers-common-sql==1.8.0
   apache-airflow-providers-ftp==3.6.0
   apache-airflow-providers-http==4.6.0
   apache-airflow-providers-imap==3.4.0
   apache-airflow-providers-mysql==5.2.1
   apache-airflow-providers-sqlite==3.5.0
   apispec==6.3.0
   argcomplete==3.1.3
   asgiref==3.7.2
   async-timeout==4.0.3
   attrs==23.1.0
   Automat==20.2.0
   Babel==2.13.1
   backoff==1.10.0
   bcrypt==3.2.0
   blinker==1.6.3
   cachelib==0.9.0
   cattrs==23.1.2
   certifi==2023.7.22
   cffi==1.16.0
   chardet==4.0.0
   charset-normalizer==3.3.2
   click==8.1.7
   clickclick==20.10.2
   cloud-init==23.2.2
   cmake==3.27.1
   colorama==0.4.6
   colorlog==4.8.0
   command-not-found==0.3
   configobj==5.0.6
   ConfigUpdater==3.1.1
   connexion==2.14.2
   constantly==15.1.0
   contourpy==1.1.0
   cron-descriptor==1.4.0
   croniter==2.0.1
   cryptography==41.0.5
   cycler==0.11.0
   dbus-python==1.2.18
   Deprecated==1.2.14
   dill==0.3.1.1
   distro==1.7.0
   distro-info==1.1+ubuntu0.1
   dnspython==2.4.2
   docutils==0.20.1
   email-validator==1.3.1
   exceptiongroup==1.1.2
   filelock==3.12.2
   Flask==2.2.5
   Flask-AppBuilder==4.3.6
   Flask-Babel==2.0.0
   Flask-Caching==2.1.0
   Flask-JWT-Extended==4.5.3
   Flask-Limiter==3.5.0
   Flask-Login==0.6.3
   Flask-Session==0.5.0
   Flask-SQLAlchemy==2.5.1
   Flask-WTF==1.2.1
   fonttools==4.42.0
   frozenlist==1.4.0
   gevent==23.7.0
   google-re2==1.1
   googleapis-common-protos==1.61.0
   graphviz==0.20.1
   greenlet==3.0.1
   grpcio==1.59.2
   gunicorn==21.2.0
   h11==0.14.0
   httpcore==0.16.3
   httplib2==0.20.2
   httpx==0.23.3
   hyperlink==21.0.0
   idna==3.4
   importlib-metadata==6.8.0
   importlib-resources==6.1.0
   imutils==0.5.4
   incremental==21.3.0
   inflection==0.5.1
   itsdangerous==2.1.2
   jeepney==0.7.1
   Jinja2==3.1.2
   jsonpatch==1.32
   jsonpointer==2.0
   jsonschema==4.19.2
   jsonschema-specifications==2023.7.1
   keyring==23.5.0
   kiwisolver==1.4.4
   launchpadlib==1.10.16
   lazr.restfulclient==0.14.4
   lazr.uri==1.0.6
   lazy-object-proxy==1.9.0
   limits==3.6.0
   linkify-it-py==2.0.2
   lit==16.0.6
   lockfile==0.12.2
   Mako==1.2.4
   Markdown==3.5.1
   markdown-it-py==3.0.0
   MarkupSafe==2.1.3
   marshmallow==3.20.1
   marshmallow-enum==1.5.1
   marshmallow-oneofschema==3.0.1
   marshmallow-sqlalchemy==0.26.1
   matplotlib==3.7.2
   mdit-py-plugins==0.4.0
   mdurl==0.1.2
   more-itertools==8.10.0
   mpmath==1.3.0
   multidict==6.0.4
   mutils==1.0.5
   mysql-connector-python==8.1.0
   mysqlclient==2.1.1
   netifaces==0.11.0
   networkx==3.1
   numpy==1.25.2
   nvidia-cublas-cu11==11.10.3.66
   nvidia-cuda-cupti-cu11==11.7.101
   nvidia-cuda-nvrtc-cu11==11.7.99
   nvidia-cuda-runtime-cu11==11.7.99
   nvidia-cudnn-cu11==8.5.0.96
   nvidia-cufft-cu11==10.9.0.58
   nvidia-curand-cu11==10.2.10.91
   nvidia-cusolver-cu11==11.4.0.1
   nvidia-cusparse-cu11==11.7.4.91
   nvidia-nccl-cu11==2.14.3
   nvidia-nvtx-cu11==11.7.91
   oauthlib==3.2.0
   opencv-python==4.8.0.76
   opentelemetry-api==1.20.0
   opentelemetry-exporter-otlp==1.20.0
   opentelemetry-exporter-otlp-proto-common==1.20.0
   opentelemetry-exporter-otlp-proto-grpc==1.20.0
   opentelemetry-exporter-otlp-proto-http==1.20.0
   opentelemetry-proto==1.20.0
   opentelemetry-sdk==1.20.0
   opentelemetry-semantic-conventions==0.41b0
   ordered-set==4.1.0
   packaging==23.2
   pandas==2.0.3
   pathspec==0.11.2
   pendulum==2.1.2
   pexpect==4.8.0
   Pillow==10.0.0
   pluggy==1.3.0
   prison==0.2.1
   protobuf==4.24.4
   psutil==5.9.6
   ptyprocess==0.7.0
   pyasn1==0.4.8
   pyasn1-modules==0.2.1
   pycparser==2.21
   pydantic==2.4.2
   pydantic_core==2.10.1
   Pygments==2.16.1
   PyGObject==3.42.1
   PyHamcrest==2.0.2
   PyJWT==2.8.0
   pyOpenSSL==21.0.0
   pyparsing==3.0.9
   pyrsistent==0.18.1
   pyserial==3.5
   python-apt==2.4.0+ubuntu2
   python-daemon==3.0.1
   python-dateutil==2.8.2
   python-debian==0.1.43+ubuntu1.1
   python-magic==0.4.24
   python-nvd3==0.15.0
   python-slugify==8.0.1
   pytz==2023.3.post1
   pytzdata==2020.1
   PyYAML==6.0.1
   referencing==0.30.2
   requests==2.31.0
   requests-toolbelt==1.0.0
   rfc3339-validator==0.1.4
   rfc3986==1.5.0
   rich==13.6.0
   rich-argparse==1.4.0
   rpds-py==0.10.6
   scipy==1.11.1
   seaborn==0.12.2
   SecretStorage==3.3.1
   service-identity==18.1.0
   setproctitle==1.3.3
   six==1.16.0
   sniffio==1.3.0
   sos==4.5.6
   SQLAlchemy==1.4.50
   SQLAlchemy-JSONField==1.0.1.post0
   SQLAlchemy-Utils==0.41.1
   sqlparse==0.4.4
   ssh-import-id==5.11
   sympy==1.12
   systemd-python==234
   tabulate==0.9.0
   tenacity==8.2.3
   termcolor==2.3.0
   text-unidecode==1.3
   torch==2.0.1
   torchvision==0.15.2
   tqdm==4.66.1
   triton==2.0.0
   Twisted==22.1.0
   typing_extensions==4.8.0
   tzdata==2023.3
   ubuntu-advantage-tools==8001
   ubuntu-drivers-common==0.0.0
   uc-micro-py==1.0.2
   ufw==0.36.1
   unattended-upgrades==0.1
   unicodecsv==0.14.1
   urllib3==1.26.18
   wadllib==1.3.6
   Werkzeug==2.2.3
   wrapt==1.15.0
   WTForms==3.0.1
   xkit==0.0.0
   xlrd==2.0.1
   yarl==1.9.2
   zipp==3.17.0
   zope.event==5.0
   zope.interface==5.4.0
   
   ### Deployment
   
   Virtualenv installation
   
   ### Deployment details
   
   - Miniconda latest version
   - Apache Airflow 2.7.3
   
   ### Anything else
   
   Full traceback :
   *** Found local files:
   ***   * /home/apache/airflow/logs/dag_id=MASP_Slave/run_id=manual__2023-11-28T00:01:58.619294+00:00/task_id=transform/attempt=1.log
   [2023-11-30, 12:29:58 CET] {taskinstance.py:1159} INFO - Dependencies all met for dep_context=non-requeueable deps ti=<TaskInstance: MASP_Slave.transform manual__2023-11-28T00:01:58.619294+00:00 [queued]>
   [2023-11-30, 12:29:58 CET] {taskinstance.py:1159} INFO - Dependencies all met for dep_context=requeueable deps ti=<TaskInstance: MASP_Slave.transform manual__2023-11-28T00:01:58.619294+00:00 [queued]>
   [2023-11-30, 12:29:58 CET] {taskinstance.py:1361} INFO - Starting attempt 1 of 1
   [2023-11-30, 12:29:58 CET] {taskinstance.py:1382} INFO - Executing <Task(PythonOperator): transform> on 2023-11-28 00:01:58.619294+00:00
   [2023-11-30, 12:29:58 CET] {standard_task_runner.py:57} INFO - Started process 3168332 to run task
   [2023-11-30, 12:29:58 CET] {standard_task_runner.py:84} INFO - Running: ['airflow', 'tasks', 'run', 'MASP_Slave', 'transform', 'manual__2023-11-28T00:01:58.619294+00:00', '--job-id', '890530', '--raw', '--subdir', 'DAGS_FOLDER/manufacturing/tests/MASP_Slave.py', '--cfg-path', '/tmp/tmp6usvkgvc']
   [2023-11-30, 12:29:58 CET] {standard_task_runner.py:85} INFO - Job 890530: Subtask transform
   [2023-11-30, 12:29:59 CET] {task_command.py:416} INFO - Running <TaskInstance: MASP_Slave.transform manual__2023-11-28T00:01:58.619294+00:00 [running]> on host clb-34a01
   [2023-11-30, 12:29:59 CET] {taskinstance.py:1662} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER='IMEDA' AIRFLOW_CTX_DAG_ID='MASP_Slave' AIRFLOW_CTX_TASK_ID='transform' AIRFLOW_CTX_EXECUTION_DATE='2023-11-28T00:01:58.619294+00:00' AIRFLOW_CTX_TRY_NUMBER='1' AIRFLOW_CTX_DAG_RUN_ID='manual__2023-11-28T00:01:58.619294+00:00'
   [2023-11-30, 12:29:59 CET] {taskinstance.py:1937} ERROR - Task failed with exception
   Traceback (most recent call last):
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/models/xcom.py", line 681, in _deserialize_value
       return pickle.loads(result.value)
   _pickle.UnpicklingError: pickle data was truncated
   During handling of the above exception, another exception occurred:
   Traceback (most recent call last):
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/operators/python.py", line 192, in execute
       return_value = self.execute_callable()
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/operators/python.py", line 209, in execute_callable
       return self.python_callable(*self.op_args, **self.op_kwargs)
     File "/home/apache/airflow/dags/manufacturing/tests/MASP_Slave.py", line 108, in transform
       extracting_res = [output for output in task_outputs if output is not None]
     File "/home/apache/airflow/dags/manufacturing/tests/MASP_Slave.py", line 108, in <listcomp>
       extracting_res = [output for output in task_outputs if output is not None]
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/models/xcom.py", line 720, in __next__
       return XCom.deserialize_value(next(self._it))
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/models/xcom.py", line 693, in deserialize_value
       return BaseXCom._deserialize_value(result, False)
     File "/home/apache/.local/lib/python3.10/site-packages/airflow/models/xcom.py", line 683, in _deserialize_value
       return json.loads(result.value.decode("UTF-8"), cls=XComDecoder, object_hook=object_hook)
   UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
   [2023-11-30, 12:29:59 CET] {taskinstance.py:1400} INFO - Marking task as FAILED. dag_id=MASP_Slave, task_id=transform, execution_date=20231128T000158, start_date=20231130T112958, end_date=20231130T112959
   [2023-11-30, 12:29:59 CET] {standard_task_runner.py:104} ERROR - Failed to execute job 890530 for task transform ('utf-8' codec can't decode byte 0x80 in position 0: invalid start byte; 3168332)
   [2023-11-30, 12:29:59 CET] {local_task_job_runner.py:228} INFO - Task exited with return code 1
   [2023-11-30, 12:29:59 CET] {taskinstance.py:2778} INFO - 0 downstream tasks scheduled from follow-on schedule check
   
   The function where it fails :
   def transform(**kwargs):
       ti = kwargs['ti']
       task_outputs = ti.xcom_pull(task_ids=["old_extract", "new_extract"])
       extracting_res = [output for output in task_outputs if output is not None]
       df = extracting_res[0]
       df = df.rename(columns={"data_n":"info_data_n"})
       schema = _template_slave.get_schema("test_wafer")
       df = concat_time_date(df)
       df = _template_slave.filter_(df, schema)
       df = _template_slave.cast(df, schema)
       df["location"] = kwargs["dag_run"].conf['location']
       df["src_path"] = kwargs["dag_run"].conf['path']
       return df
   
   The function where the data comes from :
   def old_extract(**kwargs):
       path = kwargs["dag_run"].conf['path']
       header_size = _template_slave.header(path, "Puce N°")
       raw_df = pd.read_csv(path, header=header_size, sep="\t", encoding='iso-8859-1', engine='python')
       df = raw_df[raw_df.count(axis=1) > 6][1:]
       df = get_header_fields(path, df, comment = "")
       str_columns = [col for col in df.columns if isinstance(df[col], str)]
       df[str_columns] = df[str_columns].rename(columns=str.lower)\
                                        .rename(columns=_template_slave.remove_accents)\
                                        .rename(columns=_template_slave.remove_special_characters)
       return df
   
   ### 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-unsubscribe@airflow.apache.org.apache.org

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


Re: [I] Airflow DAG not working anymore on Airflow 2.7.3 [airflow]

Posted by "gmarendaz (via GitHub)" <gi...@apache.org>.
gmarendaz commented on issue #35979:
URL: https://github.com/apache/airflow/issues/35979#issuecomment-1838256382

   @yiqijiu : thanks for your answer. Indeed, I didn't have the encoding declaration at the beginning of my DAG code and I added it but the problem remains the same.
   
   Here is the full code below : 
   `
   # -*- coding: utf-8 -*-
   
   from _lib import _template_slave
   from airflow import DAG
   from airflow.hooks.base_hook import BaseHook
   from airflow.models import Variable
   from airflow.models import XCom
   from airflow.operators.dummy_operator import DummyOperator
   from airflow.operators.python_operator import BranchPythonOperator
   from airflow.operators.python_operator import PythonOperator
   from airflow.utils.dates import days_ago
   from airflow.utils.db import provide_session
   from datetime import datetime
   from io import StringIO, BytesIO
   import chardet
   import datetime
   import json
   import logging
   import ntpath
   import numpy as np
   import os
   import pandas as pd
   import re
   import sqlalchemy
   import unicodedata
   import yaml
   
   DAG_ID = os.path.basename(__file__).replace(".pyc", "").replace(".py", "")
   
   default_args = {
       'owner': 'IMEDA',
       'start_date': days_ago(2),
       'weight_rule': "upstream"
   }
   
   ## CHECK
   def check_file(**kwargs):
       path = kwargs["dag_run"].conf['path']
       blacklist = Variable.get("manufacturing_blacklist_masp", deserialize_json=True)
       if any(s in path for s in blacklist):
           return "blacklist"
       else:
           return "pick_extract_mode"
   
   def pick_extract_mode(**kwargs):
       path = kwargs["dag_run"].conf['path']
       with open(path, encoding='latin_1') as f:
           file_ = [line for line in f]
           for n,line in enumerate(file_):
               if line.startswith("<Info>"):
                   return "new_extract"
       return "old_extract"
   
   ## EXTRACT
   def get_header_fields(path, df, comment):
       with open(path, encoding='latin_1') as f:
           for line in f:
               if line.startswith(comment + "\tNo de série :"):
                   df["batch_id"] = re.search(r'.*No de série :\t([a-zA-Z0-9]*)',line).group(1)
                   n_plaque = re.search(r'.*N° plaque :\t([0-9]*)',line).group(1)
                   # Fill with zeros to keep order 01, 02, .. , 10, 11,...
                   if len(n_plaque) < 2:
                       n_plaque = n_plaque.zfill(2)
                   df["n_plaque"] = n_plaque
               elif line.startswith(comment + "\tProduit :"):
                   df["produit"] = re.search(r'.*Produit :\t(.*)\ttechnologie :',line).group(1)
                   df["technologie"] = re.search(r'.*technologie :\t(.*)\tOpérateur',line).group(1)
               if line.startswith(comment + "\tFichier limites :"):
                   limit_file = re.search(r'\tFichier limites :\t(.*)\tdu :',line).group(1)
                   df["limit_file"] = limit_file.lower().replace(" ", "")
       return df
   
   def old_extract(**kwargs):
       path = kwargs["dag_run"].conf['path']
       header_size = _template_slave.header(path, "Puce N°")
       raw_df = pd.read_csv(path, header=header_size, sep="\t", engine='python', encoding='latin_1', encoding_errors='ignore', on_bad_lines='skip')
       # Keep only rows with more than 5 non-NaN values 
       df = raw_df[raw_df.count(axis=1) > 6][1:]
       df = get_header_fields(path, df, comment = "")
       str_columns = [col for col in df.columns if isinstance(col, str)]
       df[str_columns] = df[str_columns].rename(columns=str.lower)\
                                        .rename(columns=_template_slave.remove_accents)\
                                        .rename(columns=_template_slave.remove_special_characters)
       return df
   
   def new_extract(**kwargs):
       path = kwargs["dag_run"].conf['path']
       df = pd.read_csv(path, comment='#', sep="\t", header=[0,1], engine='python', encoding='latin_1', encoding_errors='ignore', on_bad_lines='skip')
       df.columns = df.columns.map('_'.join)
       str_columns = [col for col in df.columns if isinstance(col, str)]
       df[str_columns] = df[str_columns].rename(columns=str.lower)\
                                        .rename(columns=_template_slave.remove_accents)\
                                        .rename(columns=_template_slave.remove_special_characters)
       df = get_header_fields(path, df, comment="###\t")
       with open(path, encoding='latin_1') as f:
               file_ = [line for line in f]
               for n,line in enumerate(file_):
                   if line.startswith("Fichier clôturé"):
                       return df[1:-1]
       return df[1:]
   
   ## TRANSFORM
   """def custom_deserialize(df):
       return json.load(df.decode('latin_1'))"""
   
   def concat_time_date(df):
       df['date_heure'] = pd.to_datetime(df['info_date'] +  " " + df['info_heure'], dayfirst = True, errors="coerce")
       df = df.drop(['info_date', 'info_heure'], axis=1)
       return df
   
   def transform(**kwargs):
       ti = kwargs['ti']
       task_outputs = ti.xcom_pull(task_ids=["old_extract", "new_extract"])
       logging.info(task_outputs)
       extracting_res = [output for output in task_outputs if output is not None]
       df = extracting_res[0]
       df = df.rename(columns={"puce_n":"info_puce_n",
                               "pos_x": "info_pos_x",
                               "pos_y": "info_pos_y",
                               "date" : "info_date",
                               "heure" : "info_heure",
                               'pos_a_x_g' : 'capa_meas_pos_meas_at_x',
                               "status" : "info_status",
                               "csup_a_x_g" : "capa_meas_csup_x_g",
                               'cinf_a_x_g' : 'capa_meas_cinf_x_g',
                               'csup_a_0_g' : 'capa_meas_csup_0_g',
                               'rsup_a_0_g' : 'capa_meas_rsup_0_g',
                               'cinf_a_0_g' : 'capa_meas_cinf_0_g',
                               'rinf_a_0_g' : 'capa_meas_rinf_0_g',
                               'csup_pol' : 'capa_meas_csup_pol',
                               'cinf_pol' : 'capa_meas_cinf_pol',
                               'csup_hyst' : 'capa_meas_csup_hys',
                               'cinf_hyst' : 'capa_meas_cinf_hys',
                               'c_tot' : 'capa_meas_c_tot',
                               'sz' : 'capa_meas_sz_percent',
                               'sz_1' : 'capa_meas_sz_pf',
                               'so' : 'capa_meas_s0_a',
                               'd_pol_sup' : 'capa_meas_delta_csup_pol',
                               'd_pol_inf' : 'capa_meas_delta_cinf_pol',
                               'd_hyst_sup' : 'capa_meas_delta_csup_hys',
                               'd_hyst_inf' : 'capa_meas_delta_cinf_hys',
                               'ampl_a_0' : 'bw_meas_ampl_0_hz',
                               'ampl_x_hz' : 'bw_meas_ampl_x_hz',
                               'fc' : 'bw_meas_fc',
                               'ampl_min' : 'bw_meas_ampl_min',
                               'f_min' : 'bw_meas_f_min',
                               'ampl_res' : 'bw_meas_ampl_res',
                               'f_res' : 'bw_meas_f_res',
                               'mse' : 'bw_meas_mse',
                               'press' : 'bw_meas_press',
                               'q' : 'bw_meas_q'})
       schema = _template_slave.get_schema("test_wafer")
       df = concat_time_date(df)
       df = _template_slave.filter_(df, schema)
       df = _template_slave.cast(df, schema)
       df["location"] = kwargs["dag_run"].conf['location']
       df["src_path"] = kwargs["dag_run"].conf['path']
       return df
   
   ## LOAD 
   def load(**kwargs):
       engine = sqlalchemy.create_engine(BaseHook.get_connection("database").get_uri())
       ti = kwargs['ti']
       df = ti.xcom_pull(task_ids='transform')
       try:
           df.to_sql("test_wafer", con=engine, if_exists='append', index=False)
       except sqlalchemy.exc.IntegrityError:
           pass
   
   @provide_session
   def cleanup_xcom(session=None, **kwargs): 
       session.query(XCom).filter(XCom.dag_id == DAG_ID)\
                          .filter(XCom.execution_date == kwargs["execution_date"])\
                          .delete()
   with DAG(
       dag_id=DAG_ID,
       default_args=default_args,
       schedule_interval=None,
       max_active_runs=1,
       tags = ["manufacturing", "tests"]
   ) as dag:
       check_task = BranchPythonOperator(
           task_id="check_file",
           python_callable=check_file
       )
       blacklist_task = DummyOperator(
           task_id="blacklist"
       )
       pick_extract_mode_task = BranchPythonOperator(
           task_id="pick_extract_mode",
           python_callable=pick_extract_mode
       )
       old_extract_task = PythonOperator(
           task_id='old_extract',
           python_callable=old_extract,
       )
       new_extract_task = PythonOperator(
           task_id='new_extract',
           python_callable=new_extract,
       )
       transform_task = PythonOperator(
           task_id='transform',
           python_callable=transform,
           trigger_rule="none_failed"
       )
       load_task = PythonOperator(
           task_id='load',
           python_callable=load,
           pool="wafer_pool"
       )
       clean_xcom_task = PythonOperator(
           task_id="clean_xcom",
           python_callable = cleanup_xcom,
       )
       check_task >> [pick_extract_mode_task, blacklist_task]
       pick_extract_mode_task >> [old_extract_task, new_extract_task]
       [old_extract_task, new_extract_task] >> transform_task >> load_task >> clean_xcom_task
   `


-- 
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-unsubscribe@airflow.apache.org

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


Re: [I] Airflow DAG not working anymore on Airflow 2.7.3 [airflow]

Posted by "boring-cyborg[bot] (via GitHub)" <gi...@apache.org>.
boring-cyborg[bot] commented on issue #35979:
URL: https://github.com/apache/airflow/issues/35979#issuecomment-1833635071

   Thanks for opening your first issue here! Be sure to follow the issue template! If you are willing to raise PR to address this issue please do so, no need to wait for approval.
   


-- 
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-unsubscribe@airflow.apache.org

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


Re: [I] Airflow DAG not working anymore on Airflow 2.7.3 [airflow]

Posted by "yiqijiu (via GitHub)" <gi...@apache.org>.
yiqijiu commented on issue #35979:
URL: https://github.com/apache/airflow/issues/35979#issuecomment-1837105736

   I need you to provide the complete DAG (Directed Acyclic Graph) code. Given my past experience (which could be wrong here), you probably haven't added UTF-8 encoding declaration in the header line of the Python file.
   `#-*-coding: UTF-8 -*-`


-- 
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-unsubscribe@airflow.apache.org

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


Re: [I] Airflow DAG not working anymore on Airflow 2.7.3 [airflow]

Posted by "potiuk (via GitHub)" <gi...@apache.org>.
potiuk closed issue #35979: Airflow DAG not working anymore on Airflow 2.7.3
URL: https://github.com/apache/airflow/issues/35979


-- 
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-unsubscribe@airflow.apache.org

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