From c33446e9b2c1fe7daffed3f188817fcd1cf4282a Mon Sep 17 00:00:00 2001 From: avinab-neogy Date: Sun, 19 Jul 2026 10:49:11 +0530 Subject: [PATCH 1/3] opentelemetry-sdk: unify logging force_flush timeout defaults to 10000ms --- .../src/opentelemetry/sdk/_logs/_internal/__init__.py | 8 ++++---- .../opentelemetry/sdk/_logs/_internal/export/__init__.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py index 5f40c5c8c7..e142fa3e34 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py @@ -384,7 +384,7 @@ def shutdown(self) -> None: """Called when a :class:`opentelemetry.sdk._logs.Logger` is shutdown""" @abc.abstractmethod - def force_flush(self, timeout_millis: int = 30000) -> bool: + def force_flush(self, timeout_millis: int = 10_000) -> bool: """Export all the received logs to the configured Exporter that have not yet been exported. @@ -429,7 +429,7 @@ def shutdown(self) -> None: for lp in self._log_record_processors: lp.shutdown() - def force_flush(self, timeout_millis: int = 30000) -> bool: + def force_flush(self, timeout_millis: int = 10_000) -> bool: """Force flush the log processors one by one Args: @@ -501,7 +501,7 @@ def on_emit(self, log_record: ReadWriteLogRecord) -> None: def shutdown(self) -> None: self._submit_and_wait(lambda lp: lp.shutdown) - def force_flush(self, timeout_millis: int = 30000) -> bool: + def force_flush(self, timeout_millis: int = 10_000) -> bool: """Force flush the log processors in parallel. Args: @@ -977,7 +977,7 @@ def shutdown(self) -> None: atexit.unregister(self._at_exit_handler) self._at_exit_handler = None - def force_flush(self, timeout_millis: int = 30000) -> bool: + def force_flush(self, timeout_millis: int = 10_000) -> bool: """Force flush the log processors. Args: diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py index b9763d92be..2a891370d6 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py @@ -260,7 +260,7 @@ def shutdown(self): self._shutdown = True self._exporter.shutdown() - def force_flush(self, timeout_millis: int = 30000) -> bool: # pylint: disable=no-self-use + def force_flush(self, timeout_millis: int = 10_000) -> bool: # pylint: disable=no-self-use return True @@ -353,7 +353,7 @@ def on_emit(self, log_record: ReadWriteLogRecord) -> None: def shutdown(self): return self._batch_processor.shutdown() - def force_flush(self, timeout_millis: int | None = None) -> bool: + def force_flush(self, timeout_millis: int = 10_000) -> bool: return self._batch_processor.force_flush(timeout_millis) @staticmethod From 15649c61c2da9135ab342a5263dfbb841e8d0a8e Mon Sep 17 00:00:00 2001 From: avinab-neogy Date: Sun, 19 Jul 2026 11:09:09 +0530 Subject: [PATCH 2/3] changelog: add fragment for PR #5438 --- .changelog/5438.changed | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/5438.changed diff --git a/.changelog/5438.changed b/.changelog/5438.changed new file mode 100644 index 0000000000..c4593e028b --- /dev/null +++ b/.changelog/5438.changed @@ -0,0 +1 @@ +`opentelemetry-sdk`: unify logging force_flush timeout defaults to 10000ms From 407925aec393b2a0fd6dd0585a73ebb3665bb497 Mon Sep 17 00:00:00 2001 From: avinab-neogy Date: Mon, 17 Aug 2026 23:18:57 +0530 Subject: [PATCH 3/3] refactor: unify logging force_flush timeout defaults to 30000ms --- .changelog/5438.changed | 2 +- .../src/opentelemetry/sdk/_logs/_internal/__init__.py | 8 ++++---- .../opentelemetry/sdk/_logs/_internal/export/__init__.py | 8 ++++---- .../sdk/_logs/_internal/export/in_memory_log_exporter.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.changelog/5438.changed b/.changelog/5438.changed index c4593e028b..42e90082e5 100644 --- a/.changelog/5438.changed +++ b/.changelog/5438.changed @@ -1 +1 @@ -`opentelemetry-sdk`: unify logging force_flush timeout defaults to 10000ms +`opentelemetry-sdk`: unify logging force_flush timeout defaults to 30000ms diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py index 265799ddbe..471a94da6b 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py @@ -364,7 +364,7 @@ def shutdown(self) -> None: """Called when a :class:`opentelemetry.sdk._logs.Logger` is shutdown""" @abc.abstractmethod - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: """Export all the received logs to the configured Exporter that have not yet been exported. @@ -407,7 +407,7 @@ def shutdown(self) -> None: for lp in self._log_record_processors: lp.shutdown() - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: """Force flush the log processors one by one Args: @@ -475,7 +475,7 @@ def on_emit(self, log_record: ReadWriteLogRecord) -> None: def shutdown(self) -> None: self._submit_and_wait(lambda lp: lp.shutdown) - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: """Force flush the log processors in parallel. Args: @@ -918,7 +918,7 @@ def shutdown(self) -> None: atexit.unregister(self._at_exit_handler) self._at_exit_handler = None - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: """Force flush the log processors. Args: diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py index 08fed75cc1..d6ff7717ef 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py @@ -116,7 +116,7 @@ def shutdown(self): """ @abc.abstractmethod - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: """Hint to ensure that the export of any ``ReadableLogRecord`` objects the exporter has received prior to the call to ``force_flush`` SHOULD be completed as soon as possible, preferably before returning from this method. @@ -161,7 +161,7 @@ def export(self, batch: Sequence[ReadableLogRecord]): def shutdown(self): pass - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: return True @@ -242,7 +242,7 @@ def shutdown(self): self._shutdown = True self._exporter.shutdown() - def force_flush(self, timeout_millis: int = 10_000) -> bool: # pylint: disable=no-self-use + def force_flush(self, timeout_millis: int = 30000) -> bool: # pylint: disable=no-self-use return True @@ -321,7 +321,7 @@ def on_emit(self, log_record: ReadWriteLogRecord) -> None: def shutdown(self): return self._batch_processor.shutdown() - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: return self._batch_processor.force_flush(timeout_millis) @staticmethod diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py index 97013f432d..d11a174c15 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py @@ -44,7 +44,7 @@ def export(self, batch: collections.abc.Sequence[ReadableLogRecord]) -> LogRecor def shutdown(self) -> None: self._stopped = True - def force_flush(self, timeout_millis: int = 10_000) -> bool: + def force_flush(self, timeout_millis: int = 30000) -> bool: return True