Skip to content

Commit e1e10a3

Browse files
committed
[Rest] Support exponential backoff and retry with urllib3 < 2 and new retry parameters
1 parent 7bba084 commit e1e10a3

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

atlassian/rest_client.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,17 +239,19 @@ def _calculate_backoff_value(self, retry_count):
239239
"""
240240
Calculate the backoff delay for a given retry attempt.
241241
242-
This method computes an exponential backoff value based on the retry count.
243-
Optionally, it adds a random jitter to introduce variability in the delay
244-
to prevent synchronized retries in distributed systems. The backoff value is
245-
clamped between 0 and a maximum allowed delay (`self.max_backoff_seconds`).
242+
This method computes an exponential backoff delay based on the retry count and
243+
a configurable backoff factor. It optionally adds a random jitter to introduce
244+
variability in the delay, which can help prevent synchronized retries in
245+
distributed systems. The calculated backoff delay is clamped between 0 and a
246+
maximum allowable delay (`self.max_backoff_seconds`) to avoid excessively long
247+
wait times.
246248
247249
:param retry_count: int, REQUIRED: The current retry attempt number (1-based).
248250
Determines the exponential backoff delay.
249251
:return: float: The calculated backoff delay in seconds, adjusted for jitter
250252
and clamped to the maximum allowable value.
251253
"""
252-
backoff_value = 2 ** (retry_count - 1)
254+
backoff_value = self.backoff_factor * (2 ** (retry_count - 1))
253255
if self.backoff_jitter != 0.0:
254256
backoff_value += random.random() * self.backoff_jitter
255257
return float(max(0, min(self.max_backoff_seconds, backoff_value)))

0 commit comments

Comments
 (0)