Skip to content

Commit 5a6c422

Browse files
devin-ai-integration[bot]bot_apk
andcommitted
fix: suppress misleading backoff library log in user_defined_backoff_handler
The backoff library's default logger reported 'Backing off _send(...) for 0.0s' because user_defined_backoff_handler uses interval=0 (actual sleep happens in the on_backoff callback). This caused confusion and incorrect bug reports. Changes: - Pass logger=None to backoff.on_exception() to suppress the misleading default log message that reports the interval (0s) instead of the actual sleep time - Improve sleep_on_ratelimit log to show HTTP status code and actual retry time: 'Rate limit exceeded (HTTP 429). Retrying in {N} seconds.' - Format elapsed time in log_give_up for consistency Co-Authored-By: bot_apk <apk@cognition.ai>
1 parent 0494fd4 commit 5a6c422

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

airbyte_cdk/sources/streams/http/rate_limiting.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,20 @@ def user_defined_backoff_handler(
106106
def sleep_on_ratelimit(details: Mapping[str, Any]) -> None:
107107
_, exc, _ = sys.exc_info()
108108
if isinstance(exc, UserDefinedBackoffException):
109+
retry_after = exc.backoff
109110
if exc.response:
110111
logger.info(
111-
f"Status code: {exc.response.status_code!r}, Response Content: {exc.response.content!r}"
112+
f"Rate limit exceeded (HTTP {exc.response.status_code}). Retrying in {retry_after} seconds."
112113
)
113-
retry_after = exc.backoff
114-
logger.info(f"Retrying. Sleeping for {retry_after} seconds")
114+
else:
115+
logger.info(f"Rate limit exceeded. Retrying in {retry_after} seconds.")
115116
time.sleep(retry_after + 1) # extra second to cover any fractions of second
116117

117118
def log_give_up(details: Mapping[str, Any]) -> None:
118119
_, exc, _ = sys.exc_info()
119120
if isinstance(exc, RequestException):
120121
logger.error(
121-
f"Max retry limit reached in {details['elapsed']}s. Request: {exc.request}, Response: {exc.response}"
122+
f"Max retry limit reached after {details['elapsed']:.1f}s. Request: {exc.request}, Response: {exc.response}"
122123
)
123124
else:
124125
logger.error("Max retry limit reached for unknown request and response")
@@ -132,6 +133,7 @@ def log_give_up(details: Mapping[str, Any]) -> None:
132133
jitter=None,
133134
max_tries=max_tries,
134135
max_time=max_time,
136+
logger=None, # suppress the backoff library's default log that misleadingly reports interval (0s) instead of actual sleep time
135137
**kwargs,
136138
)
137139

0 commit comments

Comments
 (0)