n-badtke-cg opened a new issue, #71772:
URL: https://github.com/apache/airflow/issues/71772

   ### Under which category would you file this issue?
   
   Airflow Core
   
   ### Apache Airflow version
   
   3.3.1
   
   ### What happened and how to reproduce it?
   
   We are currently running Airflow 3.3.0 in Kubernetes using the Airflow Helm 
Chart v1.22 for deployment. All Dags are healthy. The Dags are fetched via Git 
Dag Bundle.
   
   After deploying, the dag processor messages errors like `Processor for 
DagFileInfo(rel_path=PosixPath('<filepath_in_git_repo>'), 
bundle_name='<a_name>', 
bundle_path=PosixPath('/tmp/airflow/dag_bundles/<a_name>/tracking_repo', 
bundle_version=None) with PID NNN has been running for 50.01 seconds, exceeding 
the timeout of 50.00 seconds. Killing it! 
[airflow.dag_processing.manager.DagFileProcessorManager] loc=manager.py:1621` 
and the overview table now shows "# Errors" > 0
   
   We have a very basic "airflow_health_check" Dag to verify the Airflow 
workers Dag runtime:
   
   ```py
   from airflow import XComArg
   from airflow.sdk import dag, task
   from airflow.sdk.exceptions import AirflowFailException
   from datetime import datetime, timedelta
   
   HEALTH_CHECK_MESSAGE: str = "Health check successful"
   HEALTHY: str = "healthy"
   UNHEALTHY: str = "unhealthy"
   
   
   @dag(
       schedule="*/2 * * * *",
       start_date=datetime(2026, 7, 1),
       dagrun_timeout=timedelta(minutes=3),
       is_paused_upon_creation=False,
       catchup=False,
   )
   def airflow_health_check() -> None:
       @task.bash
       def health_check(text: str) -> str:
           return f"echo '{text}'"
   
       @task
       def result_is_healthy(*, result: XComArg, check_against: str) -> bool:
           return str(result) == check_against
   
       @task
       def print_result(is_healthy: bool) -> None:
           print("is_healthy: " + str(type(is_healthy)) + " " + str(is_healthy))
           print(HEALTHY if is_healthy == True else UNHEALTHY)
           if not is_healthy == True:
               raise AirflowFailException()
   
       health_check_result: XComArg = health_check(HEALTH_CHECK_MESSAGE)
       result_is_healthy_bool: bool = result_is_healthy(
           result=health_check_result, check_against=HEALTH_CHECK_MESSAGE
       )
       print_result(result_is_healthy_bool)
   
   
   airflow_health_check()
   ```
   
   With Airflow 3.3.0, the Dag Runs are green.  
   Shortly after the upgrade to 3.3.1, the Dag Runs are stuck in "queued", but 
the Dag itself is still active.  
   With the Dag processor catching up and now throwing errors, the Dag gets 
"Deactivated".
   
   ### What you think should happen instead?
   
   It should just work? Idk, do I overlook something?
   
   ### Operating System
   
   Container image apache/airflow:3.3.1-python3.13
   
   ### Deployment
   
   Official Apache Airflow Helm Chart
   
   ### Apache Airflow Provider(s)
   
   amazon, celery, cncf-kubernetes, common-compat, common-io, common-messaging, 
common-sql, databricks, docker, elasticsearch, fab, ftp, git, google, grpc, 
hashicorp, http, keycloak, microsoft-azure, mysql, odbc, openlineage, 
opensearch, postgres, redis, sendgrid, sftp, slack, smtp, snowflake, ssh, 
standard
   
   ### Versions of Apache Airflow Providers
   
   apache-airflow-providers-amazon==9.34.0
   apache-airflow-providers-celery==3.23.1
   apache-airflow-providers-cncf-kubernetes==10.21.0
   apache-airflow-providers-common-compat==1.18.0
   apache-airflow-providers-common-io==1.8.0
   apache-airflow-providers-common-messaging==2.0.4
   apache-airflow-providers-common-sql==2.1.0
   apache-airflow-providers-databricks==7.18.1
   apache-airflow-providers-docker==4.5.9
   apache-airflow-providers-elasticsearch==6.9.0
   apache-airflow-providers-fab==3.8.0
   apache-airflow-providers-ftp==3.15.2
   apache-airflow-providers-git==0.4.2
   apache-airflow-providers-google==22.3.0
   apache-airflow-providers-grpc==3.9.5
   apache-airflow-providers-hashicorp==4.8.0
   apache-airflow-providers-http==6.0.5
   apache-airflow-providers-keycloak==0.8.2
   apache-airflow-providers-microsoft-azure==14.1.0
   apache-airflow-providers-mysql==6.6.1
   apache-airflow-providers-odbc==4.12.3
   apache-airflow-providers-openlineage==2.20.0
   apache-airflow-providers-opensearch==1.12.0
   apache-airflow-providers-postgres==7.0.1
   apache-airflow-providers-redis==4.5.0
   apache-airflow-providers-sendgrid==4.2.4
   apache-airflow-providers-sftp==6.0.1
   apache-airflow-providers-slack==9.10.2
   apache-airflow-providers-smtp==3.0.3
   apache-airflow-providers-snowflake==6.16.0
   apache-airflow-providers-ssh==6.0.1
   apache-airflow-providers-standard==1.17.0
   
   ### Official Helm Chart version
   
   1.22.0 (latest released)
   
   ### Kubernetes Version
   
   v1.35.1
   
   ### Helm Chart configuration
   
   Incomplete, only an excerpt. Please let me know if there might be something 
other relevant to share.
   
   ```yaml
   airflowVersion: 3.3.1
   config:
     azure_remote_logging:
       remote_wasb_log_container: airflow-remote-logs
     celery_broker_transport_options:
       visibility_timeout: 14400
     core:
       auth_manager: 
airflow.providers.keycloak.auth_manager.keycloak_auth_manager.KeycloakAuthManager
       test_connection: Hidden
     keycloak_auth_manager:
       realm: application
       requests_pool_size: 20
       server_url: <a_valid_url>
     logging:
       delete_local_logs: "False"
       remote_base_log_folder: wasb://logs
       remote_log_conn_id: airflow-remote-logging-wasb
       remote_logging: "True"
   
   dagProcessor:
     dagBundleConfigList:
     - classpath: airflow.providers.git.bundles.git.GitDagBundle
       kwargs:
         git_conn_id: <a_name_for_conn>
         refresh_interval: 30
         tracking_ref: main
       name: <a_name>
   ```
   
   
   ### Docker Image customizations
   
   Dockerfile:
   ```dockerfile
   ARG AIRFLOW_CONTAINER_VERSION=3.3.0-python3.13
   
   FROM apache/airflow:${AIRFLOW_CONTAINER_VERSION}
   
   USER root
   
   COPY org_ca.pem /tmp/org_ca.pem
   RUN csplit -z -f /usr/local/share/ca-certificates/org_ca_ \
           --suffix-format='%03d.crt' \
           /tmp/org_ca.pem \
           '/-----BEGIN CERTIFICATE-----/' '{*}' \
       && update-ca-certificates \
       && rm /tmp/org_ca.pem
   
   USER airflow
   
   COPY upstream-requirements.txt upstream-requirements.txt
   RUN --mount=type=secret,id=pip-conf,dst=/etc/pip.conf,mode=0440 \
       pip install --no-cache-dir \
       --constraint /home/airflow/constraints.txt \
       --requirement upstream-requirements.txt
   
   # install custom providers and packages in separate pip install command to 
avoid dependency version clash with constraints
   COPY custom-requirements.txt custom-requirements.txt
   RUN --mount=type=secret,id=pip-conf,dst=/etc/pip.conf,mode=0440 \
       pip install --no-cache-dir \
       --requirement custom-requirements.txt
   
   ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
   ```
   
   upstream-requirements.txt:
   ```
   # Environmernt variable ${AIRFLOW_VERSION} comes from the upstream Airflow 
image and is resolved by pip
   
apache-airflow[cloudpickle,databricks,keycloak,microsoft.azure,otel]==${AIRFLOW_VERSION}
   
   # Airflow components not covered via extras, versions are covered by 
constraints file
   virtualenv
   ```
   
   custom-requirements.txt:
   ```
   # Environment variable ${AIRFLOW_VERSION} comes from the upstream Airflow 
image and is resolved by pip
   # Pin Airflow version to prevent pip from changing it during dependency 
resolution
   apache-airflow==${AIRFLOW_VERSION}
   
   <some propietary providers>
   ```
   
   ### Anything else?
   
   To be honest, I am a bit lost where to look at else. Please let me know :)
   
   ### 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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to