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.
a new sentry t such that t(x) == s(this(x))
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.
Try to restart the broken state.
Try to restart the broken state.
the expected current state
true when the state was changed, false when the given state was not the current state
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.
a new sentry t such that t(x) == this(s(x))
Switch to flow state.
Switch to flow state.
a string describing the resource that is protected, e.g. "mysql:server-b.com:3336". It is used in exceptions and visible through JMX.
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.
Switch to broken state.
A sentry that limits the number of consecutive failures; a.k.a. a circuit breaker. A new instance can be obtained through the nl.grons.sentries.SentrySupport mixin.
The goal of a circuit breaker is to protect the caller from a resource that fails. It also protects the resource from overload when it is trying to recover. A circuit breaker works by keeping track of the number of consecutive failures. When there are more then consecutive
failLimit
failures, the circuit breaker 'breaks' and pro-actively blocks all following calls by throwing a nl.grons.sentries.core.CircuitBreakerBrokenException.Every
retryDelay
one invocation is allowed through in order to test the resource. When this call succeeds, the circuit breaker goes back to the flow state. If not, it stays in the broken state.Please see http://day-to-day-stuff.blogspot.com/2013/02/breaking-circuit-breaker.html for a rationale of the used vocabulary (broken/flow state vs. the more known open/half open/close state).