Class FcResilienceConfig

java.lang.Object
org.frontcache.resilience.FcResilienceConfig

public class FcResilienceConfig extends Object
Reads conf/resilience.properties into plain Properties and resolves per-command settings from it, replacing the Archaius ConfigurationManager.install() path. That replacement is most of the point. Archaius accepted an install once per JVM, globally, which is why FCConfig used to carry an isConfigurationInstalled() branch and why FrontcacheConfigBootstrapListener existed at all: whoever touched Archaius first won, so if the dashboard stream was hit before any page request, every per-command override in the file was silently dropped. Here the file is just a Properties object read at first use. Both workarounds are deleted and that entire class of startup-ordering bug is no longer possible. See proposal section 6.5. Key resolution: resilience.command.<key>.<prop>, then hystrix.command.<key>.<prop>, then the same two at default scope, then the built-in default. The hystrix.* prefix is the pre-2.7 spelling and stays accepted indefinitely - it costs one lookup and it is the difference between an upgrade that silently reverts every tuning key to its default and one that does not. The legacy FILE NAME is not. conf/hystrix.properties was read as a fallback for one release, warning as it went, and 2.9.0 removed it: a node that still has only that file now runs on built-in defaults and says so. The KEY PREFIX and the FILE NAME were always separate contracts on separate schedules, which is why one outlived the other - renaming the file was always enough, and was what the warning asked for.
  • Field Details

    • DEFAULT_ROLLING_STATS_MS

      public static final int DEFAULT_ROLLING_STATS_MS
      See Also:
  • Method Details

    • loadedFrom

      public String loadedFrom()
      Which file these settings came from, so a caller can name the file the operator has to edit.
    • getInstance

      public static FcResilienceConfig getInstance()
    • forCommand

      public FcCommandConfig forCommand(String commandKey, String threadPoolKey)
    • poolCoreSize

      public int poolCoreSize(String poolKey)
    • poolMaximumSize

      public int poolMaximumSize(String poolKey)
    • poolMaxQueueSize

      public int poolMaxQueueSize(String poolKey)
      Hystrix default is -1, meaning "no queue" - a SynchronousQueue, not an unbounded one.
    • poolKeepAliveMinutes

      public int poolKeepAliveMinutes(String poolKey)
    • streamMaxConcurrentConnections

      public int streamMaxConcurrentConnections()
    • configuredCommandKeys

      public List<String> configuredCommandKeys()
      Every command key the file mentions - used by tests and by the config dump.