a-pertsev opened a new issue #19888:
URL: https://github.com/apache/airflow/issues/19888


   ### Apache Airflow version
   
   2.2.1
   
   ### Operating System
   
   Ubuntu 20.04 LTS
   
   ### Versions of Apache Airflow Providers
   
   apache-airflow-providers-amazon==2.3.0
   apache-airflow-providers-apache-cassandra==2.1.0
   apache-airflow-providers-ftp==2.0.1
   apache-airflow-providers-google==6.0.0
   apache-airflow-providers-http==2.0.1
   apache-airflow-providers-imap==2.0.1
   apache-airflow-providers-jdbc==2.0.1
   apache-airflow-providers-mysql==2.1.1
   apache-airflow-providers-postgres==2.3.0
   apache-airflow-providers-presto==2.0.1
   apache-airflow-providers-slack==4.1.0
   apache-airflow-providers-sqlite==2.0.1
   
   ### Deployment
   
   Virtualenv installation
   
   ### Deployment details
   
   _No response_
   
   ### What happened
   
   Incorrect "finally" block invokes "UnboundLocalError: local variable 
'return_code' referenced before assignment"
   Traceback example:
   ```python
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/task/task_runner/standard_task_runner.py",
 line 88, in _start_by_fork
       self.log.exception(
     File "/usr/lib/python3.8/logging/__init__.py", line 1481, in exception
       self.error(msg, *args, exc_info=exc_info, **kwargs)
     File "/usr/lib/python3.8/logging/__init__.py", line 1475, in error
       self._log(ERROR, msg, args, **kwargs)
     File "/usr/lib/python3.8/logging/__init__.py", line 1589, in _log
       self.handle(record)
     File "/usr/lib/python3.8/logging/__init__.py", line 1599, in handle
       self.callHandlers(record)
     File "/usr/lib/python3.8/logging/__init__.py", line 1661, in callHandlers
       hdlr.handle(record)
     File "/usr/lib/python3.8/logging/__init__.py", line 950, in handle
       rv = self.filter(record)
     File "/usr/lib/python3.8/logging/__init__.py", line 811, in filter
       result = f.filter(record)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/utils/log/secrets_masker.py",
 line 167, in filter
       self._redact_exception_with_context(exc)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/utils/log/secrets_masker.py",
 line 150, in _redact_exception_with_context
       self._redact_exception_with_context(exception.__context__)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/utils/log/secrets_masker.py",
 line 150, in _redact_exception_with_context
       self._redact_exception_with_context(exception.__context__)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/utils/log/secrets_masker.py",
 line 148, in _redact_exception_with_context
       exception.args = (self.redact(v) for v in exception.args)
   AttributeError: can't set attribute
   During handling of the above exception, another exception occurred:
   Traceback (most recent call last):
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/executors/celery_executor.py",
 line 121, in _execute_in_fork
       args.func(args)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/cli/cli_parser.py", 
line 48, in command
       return func(*args, **kwargs)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/utils/cli.py", line 
92, in wrapper
       return f(*args, **kwargs)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
 line 292, in task_run
       _run_task_by_selected_method(args, dag, ti)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
 line 105, in _run_task_by_selected_method
       _run_task_by_local_task_job(args, ti)
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
 line 163, in _run_task_by_local_task_job
       run_job.run()
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/jobs/base_job.py", 
line 245, in run
       self._execute()
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/jobs/local_task_job.py",
 line 103, in _execute
       self.task_runner.start()
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/task/task_runner/standard_task_runner.py",
 line 41, in start
       self.process = self._start_by_fork()
     File 
"/var/lib/airflow/.venv/lib/python3.8/site-packages/airflow/task/task_runner/standard_task_runner.py",
 line 98, in _start_by_fork
       os._exit(return_code)
   UnboundLocalError: local variable 'return_code' referenced before assignment
   ```
   
   Bug location:
   
https://github.com/apache/airflow/blob/2.2.1/airflow/task/task_runner/standard_task_runner.py#L84-L98
   
   Explanation:
   There is a nested exception triggered when we are trying to log exception, 
so return_code remains undeclared.
   
   ### What you expected to happen
   
   return_code variable should be declared 
   
   ### How to reproduce
   
   It is probably hard to reproduce because you need to have exception in task 
execution as well as exception in logging function.
   
   ### 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