object RetryPolicy
- Source
- Retry.scala
- Alphabetic
- By Inheritance
- RetryPolicy
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
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
- val RetriableStatuses: Set[Status]
Statuses that are retriable, per HTTP spec
- def apply[F[_]](backoff: (Int) => Option[FiniteDuration], retriable: (Request[F], Either[Throwable, Response[F]]) => Boolean = defaultRetriable[F]): RetryPolicy[F]
Decomposes a retry policy into components that are typically configured individually.
Decomposes a retry policy into components that are typically configured individually.
- backoff
a function of attempts to an optional FiniteDuration. Return None to stop retrying, or some duration after which the request will be retried. See
exponentialBackoff
for a useful implementation.- retriable
determines whether the request is retriable from the request and either the throwable or response that was returned. Defaults to
defaultRetriable
.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def defaultRetriable[F[_]](req: Request[F], result: Either[Throwable, Response[F]]): Boolean
Returns true if both the request and response effect are retriable.
Returns true if both the request and response effect are retriable.
The request is retriable if either: - its method is idempotent and its request entity is pure - it has an org.http4s.headers.Idempotency-Key header
The response effect is retriable if: - it raised an error - it is a response whose status code is a member of
RetriableStatuses
Caution: a request wouldn't be resubmitted if the idempotent request contains streamed (effectful) Entity (nor empty, nor fully loaded into memory).
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def exponentialBackoff(maxWait: Duration, maxRetry: Int): (Int) => Option[FiniteDuration]
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def isErrorOrRetriableStatus[F[_]](result: Either[Throwable, Response[F]]): Boolean
Returns true if parameter is a Left or if the response contains a retriable status(as per HTTP spec)
- def isErrorOrStatus[F[_]](result: Either[Throwable, Response[F]], status: Set[Status]): Boolean
Like
isErrorOrRetriableStatus
but allows the caller to specify which statuses are considered retriable - 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 recklesslyRetriable[F[_]](result: Either[Throwable, Response[F]]): Boolean
Like defaultRetriable, but returns true even if the request method is not idempotent.
Like defaultRetriable, but returns true even if the request method is not idempotent. This is useful if failed requests are assumed to have not reached their destination, which is a dangerous assumption. Use at your own risk.
Caution: if the request body is effectful, the effects will be run twice. The most common symptom of this will be resubmitting an empty request body.
- 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(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()