Top Description Inners Fields Constructors Methods
io.github.resilience4j.circuitbreaker.internal

public final Class CircuitBreakerStateMachine

extends Object
implements CircuitBreaker
Class Inheritance
All Implemented Interfaces
io.github.resilience4j.circuitbreaker.CircuitBreaker
Imports
io.github.resilience4j.circuitbreaker.CallNotPermittedException, .CircuitBreaker, .CircuitBreakerConfig, .ResultRecordedAsFailureException, io.github.resilience4j.circuitbreaker.event.*, io.github.resilience4j.core.EventConsumer, .EventProcessor, io.github.resilience4j.core.functions.Either, io.github.resilience4j.core.lang.Nullable, org.slf4j.Logger, .LoggerFactory, java.time.Clock, .Duration, .Instant, java.util.Map, .Objects, java.util.concurrent.*, java.util.concurrent.atomic.AtomicBoolean, .AtomicInteger, .AtomicReference, java.util.concurrent.locks.ReentrantLock, java.util.function.Function, .Supplier, .UnaryOperator

A CircuitBreaker finite state machine.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class
private static interface
private class
private class
private class
private class
private class
private class

Field Summary

Modifier and TypeField and Description
private final CircuitBreakerConfig
private final Clock
private final Function<Clock, Long>
private final CircuitBreakerStateMachine.CircuitBreakerEventProcessor
private final ReentrantLock
private static final Logger
private final String
private final SchedulerFactory
private final AtomicReference<CircuitBreakerStateMachine.CircuitBreakerState>
private final Map<String, String>
private final TimeUnit

Constructor Summary

AccessConstructor and Description
private
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
CircuitBreakerConfig
The CircuitBreaker configuration.
circuitBreakerConfig
,
SchedulerFactory
A SchedulerFactory which can be mocked in tests.
schedulerFactory
,
Map<String, String> tags)

Creates a circuitBreaker.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
CircuitBreakerConfig
The CircuitBreaker configuration.
circuitBreakerConfig
,
SchedulerFactory
A SchedulerFactory which can be mocked in tests.
schedulerFactory
)

Creates a circuitBreaker.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
CircuitBreakerConfig
The CircuitBreaker configuration.
circuitBreakerConfig
)

Creates a circuitBreaker.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
CircuitBreakerConfig
The CircuitBreaker configuration.
circuitBreakerConfig
,
Map<String, String> tags)

Creates a circuitBreaker.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
)

Creates a circuitBreaker with default config.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
Supplier<CircuitBreakerConfig>
The CircuitBreaker configuration supplier.
circuitBreakerConfig
)

Creates a circuitBreaker.

public
CircuitBreakerStateMachine(String
the name of the CircuitBreaker
name
,
Supplier<CircuitBreakerConfig>
The CircuitBreaker configuration supplier.
circuitBreakerConfig
,
Map<String, String> tags)

Creates a circuitBreaker.

Method Summary

Modifier and TypeMethod and Description
public void
acquirePermission()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.acquirePermission.

Try to obtain a permission to execute a call.

private Duration
elapsedDuration(final long duration, TimeUnit durationUnit)

public CircuitBreakerConfig

Returns:

the config of this CircuitBreaker
getCircuitBreakerConfig
()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getCircuitBreakerConfig.

Get the config of this CircuitBreaker.

public long
getCurrentTimestamp()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getCurrentTimestamp.

Returns the current time with respect to the CircuitBreaker currentTimeFunction.

public CircuitBreaker.EventPublisher
getEventPublisher()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getEventPublisher.

Returns an EventPublisher which can be used to register event consumers.

public CircuitBreaker.Metrics
getMetrics()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getMetrics.

Returns the Metrics of this CircuitBreaker.

public String

Returns:

the name of this CircuitBreaker
getName
()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getName.

Get the name of this CircuitBreaker.

public CircuitBreaker.State

Returns:

the state of this CircuitBreaker
getState
()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getState.

Get the state of this CircuitBreaker.

public Map<String, String>
getTags()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getTags.

Returns an unmodifiable map with tags assigned to this CircuitBreaker.

public TimeUnit
getTimestampUnit()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.getTimestampUnit.

Returns the timeUnit of current timestamp.

private void
private void
handleThrowable(long duration, TimeUnit durationUnit, Throwable throwable)

public void
onError(long
The elapsed time duration of the call
duration
,
TimeUnit
The duration unit
durationUnit
,
Throwable
The throwable which must be recorded
throwable
)

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.onError.

Records a failed call.

public void
onResult(long
The elapsed time duration of the call
duration
,
TimeUnit
The duration unit
durationUnit
,
Object
The result of the protected function
result
)

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.onResult.

This method must be invoked when a call returned a result and the result predicate should decide if the call was successful or not.

public void
onSuccess(long
The elapsed time duration of the call
duration
,
TimeUnit
The duration unit
durationUnit
)

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.onSuccess.

Records a successful call.

private void
private void
publishCircuitErrorEvent(final String name, final long duration, final TimeUnit durationUnit, final Throwable throwable)

private void
publishCircuitFailureRateExceededEvent(final String name, float failureRate)

private void
publishCircuitIgnoredErrorEvent(final String name, long duration, final TimeUnit durationUnit, final Throwable throwable)

private void
publishCircuitSlowCallRateExceededEvent(final String name, float slowCallRate)

private void
private void
private void
private void
private void
private void
publishSuccessEvent(final long duration, TimeUnit durationUnit)

public void
public void
reset()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.reset.

Returns the circuit breaker to its original closed state, losing statistics.

private boolean
private void
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

public void
public void
transitionToDisabledState()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.transitionToDisabledState.

Transitions the state machine to a DISABLED state, stopping state transition, metrics and event publishing.

public void
transitionToForcedOpenState()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.transitionToForcedOpenState.

Transitions the state machine to a FORCED_OPEN state, stopping state transition, metrics and event publishing.

public void
public void
transitionToMetricsOnlyState()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.transitionToMetricsOnlyState.

Transitions the state machine to METRICS_ONLY state, stopping all state transitions but continues to capture metrics and publish events.

public void
public void
transitionToOpenStateFor(Duration
how long should we wait in open state
waitDuration
)

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.transitionToOpenStateFor.

Same as transitionToOpenState() but waits in open state for the given amount of time instead of relaying on configurations to determine it.

public void
transitionToOpenStateUntil(Instant
how long should we wait in open state
waitUntil
)

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.transitionToOpenStateUntil.

Same as transitionToOpenState() but waits in open state until the given in time instead of relaying on configurations to determine it.

public boolean
tryAcquirePermission()

Implements io.github.resilience4j.circuitbreaker.CircuitBreaker.tryAcquirePermission.

Acquires a permission to execute a call, only if one is available at the time of invocation.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait