Package ratpack.exec.util.retry
Class DurationRetryPolicy
- java.lang.Object
- 
- ratpack.exec.util.retry.DurationRetryPolicy
 
- 
- All Implemented Interfaces:
- RetryPolicy
 
 public class DurationRetryPolicy extends Object implements RetryPolicy A duration based implementation ofRetryPolicy.This strategy will signal end of retries when the elapsed time from the first error occurrence surpasses the configurable max duration, 30 seconds by default. import ratpack.exec.ExecResult; import ratpack.exec.Promise; import ratpack.exec.util.retry.DurationRetryPolicy; import ratpack.exec.util.retry.RetryPolicy; import ratpack.exec.util.retry.FixedDelay; import ratpack.test.exec.ExecHarness; import ratpack.test.internal.time.FixedWindableClock; import java.time.Duration; import java.time.Instant; import java.time.ZoneOffset; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import static org.junit.jupiter.api.Assertions.assertEquals; public class Example { private static final List<String> LOG = new LinkedList<>(); public static void main(String... args) throws Exception { AtomicInteger source = new AtomicInteger(); FixedWindableClock clock = new FixedWindableClock(Instant.now(), ZoneOffset.UTC); RetryPolicy retryPolicy = DurationRetryPolicy.of(b -> b .delay(FixedDelay.of(Duration.ofMillis(500))) .maxDuration(Duration.ofSeconds(10)) .clock(clock)); RuntimeException e = new RuntimeException("!"); Throwable result = ExecHarness.yieldSingle(exec -> Promise.sync(source::incrementAndGet) .mapIf(i -> i == 3, i -> { clock.windClock(Duration.ofMinutes(5)); return i; }) .map(i -> { throw new IllegalStateException(); }) .retry(retryPolicy, (i, t) -> LOG.add("retry attempt: " + i)) ).getThrowable(); assertEquals("java.lang.IllegalStateException", result.getClass().getCanonicalName()); assertEquals(Arrays.asList("retry attempt: 1", "retry attempt: 2"), LOG); } }- Since:
- 1.7
- See Also:
- DurationRetryPolicyBuilder
 
- 
- 
Constructor SummaryConstructors Constructor Description DurationRetryPolicy(Delay delay, Duration maxDuration, Clock clock)
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intattempts()Attempts performed so far.Promise<Duration>delay()Promise that returns the waiting time before retrying.RetryPolicyincreaseAttempt()Increase number of attempts.booleanisExhausted()If the caller should stop retrying.static DurationRetryPolicyof(Action<? super DurationRetryPolicyBuilder> definition)Builds a new duration based retry policy from the given definition.
 
- 
- 
- 
Method Detail- 
ofpublic static DurationRetryPolicy of(Action<? super DurationRetryPolicyBuilder> definition) throws Exception Builds a new duration based retry policy from the given definition.- Parameters:
- definition- the duration based retry policy definition
- Returns:
- a duration based retry policy
- Throws:
- Exception- any thrown by building the duration based retry policy
 
 - 
isExhaustedpublic boolean isExhausted() If the caller should stop retrying.- Specified by:
- isExhaustedin interface- RetryPolicy
- Returns:
- TRUE if the caller should stop retrying
 
 - 
attemptspublic int attempts() Attempts performed so far. Starts on 1, i.e. when no retry has been performed yet this returns 1.- Specified by:
- attemptsin interface- RetryPolicy
- Returns:
- attempts performed so far.
 
 - 
delaypublic Promise<Duration> delay() Promise that returns the waiting time before retrying.- Specified by:
- delayin interface- RetryPolicy
- Returns:
- promise that returns the waiting time before retrying
- See Also:
- and its implementors for different strategies
 
 - 
increaseAttemptpublic RetryPolicy increaseAttempt() Increase number of attempts.- Specified by:
- increaseAttemptin interface- RetryPolicy
- Returns:
- this policy after updating the internal state around attempts
 
 
- 
 
-