object Retry
Helper to retry potentially failing functions
- Since
10/Apr/2015 16:55
- Alphabetic
- By Inheritance
- Retry
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- case class TooManyRetries[I](lastInput: I, wrapped: Option[Exception]) extends RuntimeException with Product with Serializable
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
retry[T](maxRetryTimes: Long = Long.MaxValue)(f: ⇒ T)(implicit log: (Throwable) ⇒ Unit = _.printStackTrace): T
Retries a function until it succeeds or a maximum number of retries has been reached.
Retries a function until it succeeds or a maximum number of retries has been reached.
- maxRetryTimes
The maximum number of retries, defaults to Long.MaxValue. The function f is called at most maxRetryTimes + 1 times. In other words, iff maxRetryTimes == 0, f will be called exactly once, iff maxRetryTimes == 1, it will be called at most twice, etc.
- f
The function to (re)try
- log
An optional log function to report failed iterations to. By default prints the thrown Exception to the console.
- returns
A successful T if the function succeeded within maxRetryTimes or the last thrown NonFatal Exception otherwise. If the function throws a fatal Error, it is not retried and the error is rethrown.
-
def
retryFold[I, O](maxRetryTimes: Long = Long.MaxValue)(i: I)(f: (I) ⇒ Either[I, O])(implicit log: (Throwable) ⇒ Unit = _.printStackTrace): O
Given an input I, retries a function that returns either a new I or an O, until it returns an O or a maximum number of retries has been reached.
Given an input I, retries a function that returns either a new I or an O, until it returns an O or a maximum number of retries has been reached.
- maxRetryTimes
The maximum number of retries, defaults to Long.MaxValue. The function f is called at most maxRetryTimes + 1 times. In other words, iff maxRetryTimes == 0, f will be called exactly once, iff maxRetryTimes == 1, it will be called at most twice, etc.
- i
The initial input
- f
The function to (re)try
- log
An optional log function to report failed iterations to. By default prints the thrown Exception to the console.
- returns
A successful O if the function succeeded within maxRetryTimes or otherwise throws either TooManyRetries or the last thrown NonFatal Exception. If the function throws a fatal Error, it is not retried and the error is rethrown.
- Annotations
- @tailrec()
-
def
retryFoldWithExponentialDelay[I, O](maxRetryTimes: Long = Long.MaxValue, maxRetryTimeout: Deadline = 1 day fromNow, initialDelay: Duration = 1 millisecond, maxDelay: FiniteDuration = 1 day, exponentFactor: Double = 2)(i: I)(f: (I) ⇒ Either[I, O])(implicit log: (Throwable) ⇒ Unit = _.printStackTrace): O
Given an input I, retries a function that returns either a new I or an O, until it returns an O, a maximum number of retries has been reached, or a retry timeout has been reached.
Given an input I, retries a function that returns either a new I or an O, until it returns an O, a maximum number of retries has been reached, or a retry timeout has been reached. Each retry iteration is being exponentially delayed. The delay grows from a given start value and by a given factor until it reaches a given maximum delay value. If maxRetryTimeout is reached, the last function call is at the point of the timeout. E.g. if the initial delay is 1 second, the retry timeout 10 seconds and all other parameters at their default, the function will be retried after 1, 3 (1+2), 7 (1+2+4) and finally 10 seconds before it fails.
- maxRetryTimes
The maximum number of retries, defaults to Long.MaxValue. The function f is called at most maxRetryTimes + 1 times. In other words, iff maxRetryTimes == 0, f will be called exactly once, iff maxRetryTimes == 1, it will be called at most twice, etc.
- maxRetryTimeout
The retry Deadline until which to retry the function, defaults to 1 day from now
- initialDelay
The initial delay value, defaults to 1 nanosecond
- maxDelay
The maximum delay value, defaults to 1 day
- exponentFactor
The factor by which the delay increases between retry iterations
- f
The function to (re)try
- log
An optional log function to report failed iterations to. By default prints the thrown Exception to the console.
- returns
A successful T if the function succeeded within maxRetryTimes and maxRetryTimeout or the last thrown NonFatal Exception otherwise. If the function throws a fatal Error, it is not retried and the error is rethrown.
- Annotations
- @tailrec()
-
def
retryWithExponentialDelay[T](maxRetryTimes: Long = Long.MaxValue, maxRetryTimeout: Deadline = 1 day fromNow, initialDelay: Duration = 1 millisecond, maxDelay: FiniteDuration = 1 day, exponentFactor: Double = 2)(f: ⇒ T)(implicit log: (Throwable) ⇒ Unit = _.printStackTrace): T
Retries a function until it succeeds, a maximum number of retries has been reached, or a retry timeout has been reached.
Retries a function until it succeeds, a maximum number of retries has been reached, or a retry timeout has been reached. Each retry iteration is being exponentially delayed. The delay grows from a given start value and by a given factor until it reaches a given maximum delay value. If maxRetryTimeout is reached, the last function call is at the point of the timeout. E.g. if the initial delay is 1 second, the retry timeout 10 seconds and all other parameters at their default, the function will be retried after 1, 3 (1+2), 7 (1+2+4) and finally 10 seconds before it fails.
- maxRetryTimes
The maximum number of retries, defaults to Long.MaxValue. The function f is called at most maxRetryTimes + 1 times. In other words, iff maxRetryTimes == 0, f will be called exactly once, iff maxRetryTimes == 1, it will be called at most twice, etc.
- maxRetryTimeout
The retry Deadline until which to retry the function, defaults to 1 day from now
- initialDelay
The initial delay value, defaults to 1 nanosecond
- maxDelay
The maximum delay value, defaults to 1 day
- exponentFactor
The factor by which the delay increases between retry iterations
- f
The function to (re)try
- log
An optional log function to report failed iterations to. By default prints the thrown Exception to the console.
- returns
A successful T if the function succeeded within maxRetryTimes and maxRetryTimeout or the last thrown NonFatal Exception otherwise. If the function throws a fatal Error, it is not retried and the error is rethrown.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )