diff --git a/src/databricks/sql/auth/retry.py b/src/databricks/sql/auth/retry.py index 57cfeed5..988206cb 100755 --- a/src/databricks/sql/auth/retry.py +++ b/src/databricks/sql/auth/retry.py @@ -5,6 +5,8 @@ from enum import Enum from typing import List, Optional, Tuple, Union +import urllib3 + # We only use this import for type hinting try: # If urllib3~=2.0 is installed @@ -14,6 +16,8 @@ from urllib3 import HTTPResponse as BaseHTTPResponse from urllib3 import Retry from urllib3.util.retry import RequestHistory +from packaging import version + from databricks.sql.exc import ( CursorAlreadyClosedError, @@ -308,8 +312,9 @@ def get_backoff_time(self) -> float: current_attempt = self.stop_after_attempts_count - int(self.total or 0) proposed_backoff = (2**current_attempt) * self.delay_min - if self.backoff_jitter != 0.0: - proposed_backoff += random.random() * self.backoff_jitter + if version.parse(urllib3.__version__) >= version.parse("2.0.0"): + if self.backoff_jitter != 0.0: + proposed_backoff += random.random() * self.backoff_jitter proposed_backoff = min(proposed_backoff, self.delay_max) self.check_proposed_wait(proposed_backoff)