Packages

class BlockSequencerCircuitBreaker extends NamedLogging

Circuit breaker used for stopping accepting requests when the sequencer is overloaded and falling behind on processing blocks. It works by keeping track of the lastTs on each block process and computing a delay between that timestamp and current time. If the delay is larger than allowedBlockDelay, a failure is registered.

Following the circuit breaker logic described in https://doc.akka.io/libraries/akka-core/current/common/circuitbreaker.html, after maxFailures consecutive failures, requests will no longer be accepted (state goes from closed to open).

After a resetTimeout amount of time has passed in the open state, the circuit goes to half-open state, where requests are accepted, and if the next block delay registered is in the accepted interval, the circuit breaker closes again and requests are accepted, otherwise, it goes back to being open (and requests not accepted). In this case, the resetTimeout is multiplied by the exponentialBackoffFactor to compute the next timeout (up until at most maxResetTimeout).

It is possible to configure separate config breaker parameter per message type.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BlockSequencerCircuitBreaker
  2. NamedLogging
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new BlockSequencerCircuitBreaker(config: CircuitBreakerConfig, clock: Clock, metrics: SequencerMetrics, scheduler: Scheduler, loggerFactory: NamedLoggerFactory)(implicit ec: ExecutionContext)

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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  6. def disable(): Unit
  7. def enable(): Unit
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  10. implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  11. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. def logger: TracedLogger
    Attributes
    protected
    Definition Classes
    NamedLogging
  15. val loggerFactory: NamedLoggerFactory
  16. implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. def noTracingLogger: Logger
    Attributes
    protected
    Definition Classes
    NamedLogging
  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  21. def registerLastBlockTimestamp(lastTs: Traced[CantonTimestamp]): Unit
  22. def shouldRejectAcknowledgements: Boolean
  23. def shouldRejectRequests(submissionRequest: SubmissionRequest): Boolean
  24. def shouldRejectRequests(submissionRequestType: SubmissionRequestType): Boolean
  25. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  26. def toString(): String
    Definition Classes
    AnyRef → Any
  27. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  28. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from NamedLogging

Inherited from AnyRef

Inherited from Any

Ungrouped