Skip to content

Commit 2394559

Browse files
committed
Add time based retry upper bound to calculation loop
1 parent 80be176 commit 2394559

File tree

1 file changed

+6
-6
lines changed
  • core/src/main/java/org/apache/accumulo/core/util

1 file changed

+6
-6
lines changed

core/src/main/java/org/apache/accumulo/core/util/Retry.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,13 @@ private void calculateRetriesWithinDuration() {
404404
long numberOfRetries = 0;
405405
long cumulativeWaitTimeMillis = 0;
406406
long currentWaitTimeMillis = initialWait.toMillis();
407-
long retriesForDurationMillis = retriesForDuration.toMillis();
407+
final long retriesForDurationMillis = retriesForDuration.toMillis();
408408

409-
while (cumulativeWaitTimeMillis + currentWaitTimeMillis <= retriesForDurationMillis) {
409+
// set an upper bound for the number of retries
410+
final long maxRetries = Duration.ofHours(1).toMillis();
411+
412+
while (cumulativeWaitTimeMillis + currentWaitTimeMillis <= retriesForDurationMillis
413+
&& numberOfRetries < maxRetries) {
410414

411415
cumulativeWaitTimeMillis += currentWaitTimeMillis;
412416
numberOfRetries++;
@@ -421,10 +425,6 @@ private void calculateRetriesWithinDuration() {
421425
currentWaitTimeMillis = maxWait.toMillis(); // Ensure wait time does not exceed maxWait
422426
}
423427

424-
// prevent an infinite loop
425-
if (numberOfRetries >= Integer.MAX_VALUE) {
426-
break;
427-
}
428428
}
429429

430430
this.maxRetries = numberOfRetries;

0 commit comments

Comments
 (0)