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]