Class FcCommandConfig

java.lang.Object
org.frontcache.resilience.FcCommandConfig

public class FcCommandConfig extends Object
The resolved settings for one command key, read from conf/resilience.properties by FcResilienceConfig and translated to Resilience4j configs here. The Hystrix property names and their semantics are preserved verbatim - the property names outlived the library, and its keys, so an operator's existing tuning carries over untouched. See proposal section 5.1 for the key-by-key mapping.
  • Method Details

    • getCommandKey

      public String getCommandKey()
    • getIsolation

      public FcCommandConfig.Isolation getIsolation()
    • getTimeoutMs

      public int getTimeoutMs()
    • isInterruptOnTimeout

      public boolean isInterruptOnTimeout()
    • getSemaphoreMaxConcurrentRequests

      public int getSemaphoreMaxConcurrentRequests()
    • getErrorThresholdPercentage

      public int getErrorThresholdPercentage()
    • getRequestVolumeThreshold

      public int getRequestVolumeThreshold()
    • getSleepWindowMs

      public int getSleepWindowMs()
    • getRollingStatsMs

      public int getRollingStatsMs()
    • getThreadPoolKey

      public String getThreadPoolKey()
    • getFallbackSemaphoreMaxConcurrentRequests

      public int getFallbackSemaphoreMaxConcurrentRequests()
      Parsed but NOT enforced - reported on the dashboard only, so an existing resilience.properties round-trips and the propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests field the dashboard asserts keeps carrying the operator's value. See proposal section 6.3.
    • circuitBreakerConfig

      public io.github.resilience4j.circuitbreaker.CircuitBreakerConfig circuitBreakerConfig()
      Two Resilience4j defaults have to be overridden or production behavior changes silently: permittedNumberOfCallsInHalfOpenState (R4j 10, Hystrix probes with exactly 1) and the exception exclusions below. The exclusions are the non-obvious half. Resilience4j's decorators record every exception the decorated call throws, including the rejections thrown by the bulkhead and the thread pool that sit inside the breaker. Hystrix counts neither SEMAPHORE_REJECTED nor THREAD_POOL_REJECTED against the error percentage. Without these exclusions a saturated node would open its own circuits purely because it was busy - a load-shedding spiral that is entirely an artifact of the library swap.
    • timeLimiterConfig

      public io.github.resilience4j.timelimiter.TimeLimiterConfig timeLimiterConfig()
    • bulkheadConfig

      public io.github.resilience4j.bulkhead.BulkheadConfig bulkheadConfig()
      maxWaitDuration is ZERO on purpose: Hystrix's semaphore is a non-blocking tryAcquire, so a non-zero wait here would silently turn rejections into queued waits. It defaults to zero in Resilience4j 2.x, and is set explicitly rather than assumed.