Skip to content

Commit bf65b81

Browse files
committed
isolate delay bounding
Signed-off-by: Jesse Whitehouse <[email protected]>
1 parent fa1fd50 commit bf65b81

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/databricks/sql/thrift_backend.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,17 +260,22 @@ def make_request(self, method, request):
260260
def get_elapsed():
261261
return time.time() - t0
262262

263+
def bound_retry_delay(attempt, proposed_delay):
264+
"""bound delay (seconds) by [min_delay*1.5^(attempt-1), max_delay]
265+
"""
266+
delay = int(proposed_delay)
267+
delay = max(delay, self._retry_delay_min * math.pow(1.5, attempt - 1))
268+
delay = min(delay, self._retry_delay_max)
269+
return delay
270+
263271
def extract_retry_delay(attempt):
264272
# encapsulate retry checks, returns None || delay-in-secs
265273
# Retry IFF 429/503 code + Retry-After header set
266274
http_code = getattr(self._transport, "code", None)
267275
retry_after = getattr(self._transport, "headers", {}).get("Retry-After")
268276
if http_code in [429, 503] and retry_after:
269277
# bound delay (seconds) by [min_delay*1.5^(attempt-1), max_delay]
270-
delay = int(retry_after)
271-
delay = max(delay, self._retry_delay_min * math.pow(1.5, attempt - 1))
272-
delay = min(delay, self._retry_delay_max)
273-
return delay
278+
return bound_retry_delay(attempt, int(retry_after))
274279
return None
275280

276281
def attempt_request(attempt):

0 commit comments

Comments
 (0)