From edd76d6b8aff029ae9e600b5fb675d30bdea07df Mon Sep 17 00:00:00 2001 From: Kevin Pullin Date: Fri, 5 Apr 2019 09:02:05 -0700 Subject: [PATCH] [AIRFLOW-4248] Fix 'FileExistsError' makedirs race in file_processor_handler --- airflow/utils/log/file_processor_handler.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/airflow/utils/log/file_processor_handler.py b/airflow/utils/log/file_processor_handler.py index fb7b2fad32013..098b018d47275 100644 --- a/airflow/utils/log/file_processor_handler.py +++ b/airflow/utils/log/file_processor_handler.py @@ -17,7 +17,6 @@ # specific language governing permissions and limitations # under the License. -import errno import logging import os @@ -49,9 +48,9 @@ def __init__(self, base_log_folder, filename_template): if not os.path.exists(self._get_log_directory()): try: os.makedirs(self._get_log_directory()) - except OSError as e: + except OSError: # only ignore case where the directory already exist - if e.errno != errno.EEXIST: + if not os.path.isdir(self._get_log_directory()): raise logging.warning("%s already exists", self._get_log_directory()) @@ -138,7 +137,11 @@ def _init_file(self, filename): directory = os.path.dirname(full_path) if not os.path.exists(directory): - os.makedirs(directory) + try: + os.makedirs(directory) + except OSError: + if not os.path.isdir(directory): + raise if not os.path.exists(full_path): open(full_path, "a").close()