From 82915be03feb342624089d4eac91e07bac6c699b Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 1 Nov 2024 12:03:35 -0300 Subject: [PATCH] refactor: dynamically retrieve maximum buffer size from environment in SizedLogBuffer (#4334) * Refactor logger to dynamically retrieve max buffer size from environment variable * fix: add setter to max property --- src/backend/base/langflow/logging/logger.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/backend/base/langflow/logging/logger.py b/src/backend/base/langflow/logging/logger.py index 5ea90d39244a..080ccd1b38b7 100644 --- a/src/backend/base/langflow/logging/logger.py +++ b/src/backend/base/langflow/logging/logger.py @@ -32,16 +32,12 @@ def __init__( The buffer can be overwritten by an env variable LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE because the logger is initialized before the settings_service are loaded. """ - self.max: int = 0 - env_buffer_size = os.getenv("LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE", "0") - if env_buffer_size.isdigit(): - self.max = int(env_buffer_size) - self.buffer: deque = deque() self._max_readers = max_readers self._wlock = Lock() self._rsemaphore = Semaphore(max_readers) + self._max = 0 def get_write_lock(self) -> Lock: return self._wlock @@ -106,6 +102,19 @@ def get_last_n(self, last_idx: int) -> dict[int, str]: finally: self._rsemaphore.release() + @property + def max(self) -> int: + # Get it dynamically to allow for env variable changes + if self._max == 0: + env_buffer_size = os.getenv("LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE", "0") + if env_buffer_size.isdigit(): + self._max = int(env_buffer_size) + return self._max + + @max.setter + def max(self, value: int) -> None: + self._max = value + def enabled(self) -> bool: return self.max > 0