Package org.eclipse.aether.named.support
Class Retry
java.lang.Object
org.eclipse.aether.named.support.Retry
Retry helper: retries given
Callable
as long as it returns null
(interpreted
as "no answer yet") or given time passes. This helper implements similar semantics regarding
caller threads as Lock.tryLock(long, TimeUnit)
method does:
blocks the caller thread until operation return non-null
value within the given waiting
time and the current thread has not been interrupted.- Since:
- 1.7.3
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Marker interface to apply onto exceptions to make them "never retried" when thrown. -
Method Summary
Modifier and TypeMethodDescriptionstatic <R> R
retry
(int attempts, long sleepMillis, Callable<R> operation, Predicate<Exception> retryPredicate, R defaultResult) Retries attempting max given times the passed in operation, sleeping givensleepMills
between retries.static <R> R
retry
(long time, TimeUnit unit, long sleepMillis, Callable<R> operation, Predicate<Exception> retryPredicate, R defaultResult) Retries for given amount of time (time, unit) the passed in operation, sleeping givensleepMills
between retries.
-
Method Details
-
retry
public static <R> R retry(long time, TimeUnit unit, long sleepMillis, Callable<R> operation, Predicate<Exception> retryPredicate, R defaultResult) throws InterruptedException Retries for given amount of time (time, unit) the passed in operation, sleeping givensleepMills
between retries. In case operation returnsnull
, it is assumed "is not done yet" state, so retry will happen (if time barrier allows). If time barrier passes, and stillnull
("is not done yet") is returned from operation, thedefaultResult
is returned.- Throws:
InterruptedException
-
retry
public static <R> R retry(int attempts, long sleepMillis, Callable<R> operation, Predicate<Exception> retryPredicate, R defaultResult) throws InterruptedException Retries attempting max given times the passed in operation, sleeping givensleepMills
between retries. In case operation returnsnull
, it is assumed "is not done yet" state, so retry will happen (if attempt count allows). If all attempts used, and stillnull
("is not done yet") is returned from operation, thedefaultResult
is returned.Just to clear things up: 5 attempts is really 4 retries (once do it and retry 4 times). 0 attempts means "do not even try it", and this method returns without doing anything.
- Throws:
InterruptedException
-