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

   ### Apache Airflow version
   
   3.1.5
   
   ### If "Other Airflow 3 version" selected, which one?
   
   _No response_
   
   ### What happened?
   
   What happened: I am running Airflow 3.1.3 using Docker and Git Bundles to 
sync DAGs. When I push a DAG file that contains a logical runtime error during 
parsing (specifically an UnboundLocalError), the following happens:
   
   1. The DAG disappears from the Airflow UI (Grid/Home).
   2. The "Import Errors" tab/list is empty.
   3. The table import_error in the database is empty.
   4. However, the dag-processor logs clearly show that the error was caught 
but seemingly failed to persist to the DB.
   
   It seems that specific runtime errors inside the DAG factory prevent the 
GitDagBundle from correctly mapping the physical file path back to the bundle 
URI for the database insertion, causing a silent failure in the UI.
   
   
   
   ### What you think should happen instead?
   
   The DAG should appear in the "Import Errors" list in the UI with the stack 
trace, just like it does for LocalDagBundle or simple SyntaxErrors.
   
   ### How to reproduce
   
   
   1. Configure Airflow 3 with a GitDagBundle.
   
   My dag bundle config:
   ```json
   [dag_processor]
   dag_bundle_storage_path = /opt/airflow/dags_bundle
   
   dag_bundle_config_list = [
          {
         "name": "gitlab_airflow_prod",
         "classpath": "airflow.providers.git.bundles.git.GitDagBundle",
         "kwargs": {
                        "tracking_ref": "main", 
               "subdir": "dags",
                        "git_conn_id": "gitlab_airflow_prod",
                        "view_url_template": 
"https://localgitlab/airflow/pr-airflow/-/tree/main";
                                }
                },
         {
           "name": "dags-folder",
           "classpath": "airflow.dag_processing.bundles.local.LocalDagBundle",
           "kwargs": {}
         }
       ]
   refresh_interval = 60
   parsing_processes = 2
   
   ```
   
   2. Push the following DAG to the repository:
   ```py
   from airflow.decorators import dag, task
   from datetime import datetime
   
   @dag(
       dag_id="reproduce_unbound_error",
       start_date=datetime(2025, 1, 1),
       schedule=None,
       catchup=False
   )
   def invalid_dag_logic():
       # Usage before assignment triggers UnboundLocalError at parse time
       print(f"Accessing var: {my_var}")
   
       @task
       def t1(): pass
   
       t1()
   
       my_var = "defined_later"
   
   invalid_dag_logic()
   ```
   3. Observe that the DAG does not appear in the UI and no import errors are 
reported.
   
   Operating System: Linux (Docker)
   
   Deployment: Docker Compose / Official Image
   
   Relevant logs: Logs from dag-processor:
   ```json
   {"timestamp":"2026-01-02T18:11:28.392123Z","level":"info","event":"Filling 
up the DagBag from 
/opt/airflow/dags_bundle/gitlab_airflow_prod/tracking_repo/dags/test/test.py","logger":"airflow.models.dagbag.DagBag","filename":"dagbag.py","lineno":593}
   {"timestamp":"2026-01-02T18:11:28.416660Z","level":"error","event":"Failed 
to import: 
/opt/airflow/dags_bundle/gitlab_airflow_prod/tracking_repo/dags/test/test.py","logger":"airflow.models.dagbag.DagBag","filename":"dagbag.py","lineno":415,"error_detail":[{"exc_type":"UnboundLocalError","exc_value":"cannot
 access local variable 'variable_problem' where it is not associated with a 
value","exc_notes":[],"syntax_error":null,"is_cause":false,"frames":[{"filename":"/home/airflow/.local/lib/python3.12/site-packages/airflow/models/dagbag.py","lineno":405,"name":"parse"},{"filename":"<frozen
 
importlib._bootstrap_external>","lineno":999,"name":"exec_module"},{"filename":"<frozen
 
importlib._bootstrap>","lineno":488,"name":"_call_with_frames_removed"},{"filename":"/opt/airflow/dags_bundle/gitlab_airflow_prod/tracking_repo/dags/test/test.py","lineno":31,"name":"<module>"},{"filename":"/home/airflow/.local/lib/python3.12/site-packages/airflow/sdk/definitions/dag.py","lineno":1557,"name":"facto
 
ry"},{"filename":"/opt/airflow/dags_bundle/gitlab_airflow_prod/tracking_repo/dags/test/test.py","lineno":16,"name":"invalid_dag_logic"}],"is_group":false,"exceptions":[]}]}
   
   
   ```
   
   
   ### Operating System
   
   Red Hat Enterprise Linux release 9.6 (Plow)
   
   ### Versions of Apache Airflow Providers
   
   apache-airflow-providers-git = 0.0.9
   
   ### Deployment
   
   Docker-Compose
   
   ### 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: [email protected]

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

Reply via email to