diff --git a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py index ae30c5ca429b2..b426a17ccc26e 100644 --- a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py +++ b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py @@ -560,10 +560,17 @@ def consume_logs(*, since_time: DateTime | None = None) -> tuple[DateTime | None return val.add(seconds=2), e except HTTPError as e: exception = e - self.log.exception( - "Reading of logs interrupted for container %r; will retry.", - container_name, - ) + self._http_error_timestamps = getattr(self, "_http_error_timestamps", []) + self._http_error_timestamps = [ + t for t in self._http_error_timestamps if t > utcnow() - timedelta(seconds=60) + ] + self._http_error_timestamps.append(utcnow()) + # Log only if more than 2 errors occurred in the last 60 seconds + if len(self._http_error_timestamps) > 2: + self.log.exception( + "Reading of logs interrupted for container %r; will retry.", + container_name, + ) return last_captured_timestamp or since_time, exception # note: `read_pod_logs` follows the logs, so we shouldn't necessarily *need* to