diff --git a/airflow/utils/log/trigger_handler.py b/airflow/utils/log/trigger_handler.py index aa9a43ec87ad5..02af5f306fbd5 100644 --- a/airflow/utils/log/trigger_handler.py +++ b/airflow/utils/log/trigger_handler.py @@ -19,6 +19,7 @@ import asyncio import logging +from contextlib import suppress from contextvars import ContextVar from copy import copy from logging.handlers import QueueHandler @@ -110,7 +111,8 @@ def close_one(self, trigger_id): h = self.handlers.get(trigger_id) if h: h.close() - del self.handlers[trigger_id] + with suppress(KeyError): # race condition between `handle` and `close` + del self.handlers[trigger_id] def flush(self): for h in self.handlers.values(): @@ -118,9 +120,7 @@ def flush(self): def close(self): for trigger_id in list(self.handlers.keys()): - h = self.handlers[trigger_id] - h.close() - del self.handlers[trigger_id] + self.close_one(trigger_id) class LocalQueueHandler(QueueHandler):