You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Sébastien Brochet (JIRA)" <ji...@apache.org> on 2018/02/05 09:32:01 UTC
[jira] [Created] (AIRFLOW-2065) Worker logging can raise
FileExistsError when more than one process execute concurrently
Sébastien Brochet created AIRFLOW-2065:
------------------------------------------
Summary: Worker logging can raise FileExistsError when more than one process execute concurrently
Key: AIRFLOW-2065
URL: https://issues.apache.org/jira/browse/AIRFLOW-2065
Project: Apache Airflow
Issue Type: Bug
Components: executor, logging
Affects Versions: 1.9.0
Reporter: Sébastien Brochet
Hello,
We started observing random failing during the execution of our dags after upgrading to 1.9.0. After careful debugging, we noticing the following exception in the worker logs:
```
Traceback (most recent call last):
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/logging/config.py", line 558, in configure
handler = self.configure_handler(handlers[name])
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/logging/config.py", line 731, in configure_handler
result = factory(**kwargs)
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/site-packages/airflow/utils/log/file_processor_handler.py", line 48, in __init__
os.makedirs(self._get_log_directory())
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
FileExistsError: [Errno 17] File exists: '/projects/airflow-hadoop/airflow/logs/scheduler/2018-02-05'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/projects/airflow-hadoop/anaconda3/bin/airflow", line 16, in <module>
from airflow import configuration
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/site-packages/airflow/__init__.py", line 31, in <module>
from airflow import settings
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/site-packages/airflow/settings.py", line 148, in <module>
configure_logging()
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/site-packages/airflow/logging_config.py", line 75, in configure_logging
raise e
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/site-packages/airflow/logging_config.py", line 70, in configure_logging
dictConfig(logging_config)
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/logging/config.py", line 795, in dictConfig
dictConfigClass(config).configure()
File "/projects/airflow-hadoop/anaconda3/lib/python3.6/logging/config.py", line 566, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'file.processor': [Errno 17] File exists: '/projects/airflow-hadoop/airflow/logs/scheduler/2018-02-05'
```
As you can see, an exception is raised when trying to create the directory where to store the executor logs. This can happen if two tasks are scheduled are the exact same time on the same worker. It appears to be the case here :
```
[2018-02-05 02:10:07,886] \{celery_executor.py:50} INFO - Executing command in Celery: airflow run xxxx pairing_sensor_check 2018-02-04T02:10:00 --local --pool sensor -sd /projects/airflow-hadoop/airflow/dags/flow.py
[2018-02-05 02:10:07,908] \{celery_executor.py:50} INFO - Executing command in Celery: airflow run yyy pairing_sensor_check 2018-02-04T02:10:00 --local --pool sensor -sd /projects/airflow-hadoop/airflow/dags/flow.py
```
Culprits is here: [https://github.com/apache/incubator-airflow/blob/v1-9-stable/airflow/utils/log/file_processor_handler.py#L47-L48] (not fixed in master)
A simple fix would be to wrap the `makedirs` command into a `try` / `catch` block.
Thanks,
Sébastien
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)