nl.grons.sentries.core

DurationLimitSentry

class DurationLimitSentry extends ChainableSentry

A sentry that limits the duration of an invocation. A new instance can be obtained through the nl.grons.sentries.SentrySupport mixin.

The goal of a duration limiter is to support callers that are only interested in the results for a limited time.

WARNING: do NOT use this sentry when you invoke it from a Future or an Actor. For such circumstances you are MUCH better of with a timeout on the enclosing future or a timeout message within the actor. Reason: this sentry blocks the current thread while waiting on a future that executes the task. Blocking the current thread is an anti-pattern for futures and actors.

Note that when the wait period has passed, the task still completes in another thread. Make sure there are enough threads in the executor. By default a Executors.newCachedThreadPool() is used which creates as much threads as needed. The executor can be changed by overriding .executionContext.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. DurationLimitSentry
  2. ChainableSentry
  3. NamedSentry
  4. Sentry
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DurationLimitSentry(resourceName: String, durationLimit: Duration)

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. def andThen(s: Sentry): Sentry

    Composes two instances of Sentry in a new Sentry, with this sentries context applied first.

    Composes two instances of Sentry in a new Sentry, with this sentries context applied first.

    returns

    a new sentry t such that t(x) == s(this(x))

    Definition Classes
    Sentry
  5. def apply[T](r: ⇒ T): T

    Run the given code block in the context of this sentry, and return its value.

    Run the given code block in the context of this sentry, and return its value.

    When an invocations takes too long, a nl.grons.sentries.support.NotAvailableException is thrown.

    Definition Classes
    DurationLimitSentrySentry
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. def compose(s: Sentry): Sentry

    Composes two instances of Sentry in a new Sentry, with this sentries context applied last.

    Composes two instances of Sentry in a new Sentry, with this sentries context applied last.

    returns

    a new sentry t such that t(x) == this(s(x))

    Definition Classes
    Sentry
  9. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  11. lazy val executionContext: ExecutionContext

  12. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  14. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  17. final def notify(): Unit

    Definition Classes
    AnyRef
  18. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  19. def reset(): Unit

    Go back to the initial state.

    Go back to the initial state.

    Definition Classes
    DurationLimitSentrySentry
  20. val resourceName: String

    returns

    a string describing the resource that is protected, e.g. "mysql:server-b.com:3336". It is used in exceptions and visible through JMX.

    Definition Classes
    DurationLimitSentryNamedSentry
  21. val sentryType: String

    returns

    a simple describing identifier that is unique per sentry chain, e.g. "rateLimit". ResourceName plus sentryType uniquely name each sentry. The sentry registry enforces this. The sentryType is also used in JMX to uniquely name bean properties for a resource. null for sentry wrappers, that must not be registered.

    Definition Classes
    DurationLimitSentryChainableSentry
  22. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  23. def toString(): String

    Definition Classes
    AnyRef → Any
  24. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from ChainableSentry

Inherited from NamedSentry

Inherited from Sentry

Inherited from AnyRef

Inherited from Any

Ungrouped