
com.groupbyinc.flux.indices.breaker.HierarchyCircuitBreakerService.class Maven / Gradle / Ivy
???? 3? Bcom/groupbyinc/flux/indices/breaker/HierarchyCircuitBreakerService 9com/groupbyinc/flux/indices/breaker/CircuitBreakerService #HierarchyCircuitBreakerService.java Pcom/groupbyinc/flux/indices/breaker/HierarchyCircuitBreakerService$ApplySettings
ApplySettings 6com/groupbyinc/flux/common/breaker/CircuitBreaker$Type 1com/groupbyinc/flux/common/breaker/CircuitBreaker Type >com/groupbyinc/flux/node/settings/NodeSettingsService$Listener 5com/groupbyinc/flux/node/settings/NodeSettingsService Listener CHILD_LOGGER_PREFIX Ljava/lang/String; $com.groupbyinc.flux.indices.breaker. breakers $Ljava/util/concurrent/ConcurrentMap; kLjava/util/concurrent/ConcurrentMap; %OLD_CIRCUIT_BREAKER_MAX_BYTES_SETTING indices.fielddata.breaker.limit $OLD_CIRCUIT_BREAKER_OVERHEAD_SETTING "indices.fielddata.breaker.overhead #TOTAL_CIRCUIT_BREAKER_LIMIT_SETTING indices.breaker.total.limit ! #DEFAULT_TOTAL_CIRCUIT_BREAKER_LIMIT 70% $ 'FIELDDATA_CIRCUIT_BREAKER_LIMIT_SETTING indices.breaker.fielddata.limit ' *FIELDDATA_CIRCUIT_BREAKER_OVERHEAD_SETTING "indices.breaker.fielddata.overhead * &FIELDDATA_CIRCUIT_BREAKER_TYPE_SETTING indices.breaker.fielddata.type - DEFAULT_FIELDDATA_BREAKER_LIMIT 60% 0 #DEFAULT_FIELDDATA_OVERHEAD_CONSTANT D??z?G?{ %REQUEST_CIRCUIT_BREAKER_LIMIT_SETTING indices.breaker.request.limit 7 (REQUEST_CIRCUIT_BREAKER_OVERHEAD_SETTING indices.breaker.request.overhead : $REQUEST_CIRCUIT_BREAKER_TYPE_SETTING indices.breaker.request.type = DEFAULT_REQUEST_BREAKER_LIMIT 40% @ DEFAULT_BREAKER_TYPE memory C parentSettings 5Lcom/groupbyinc/flux/indices/breaker/BreakerSettings; fielddataSettings requestSettings parentTripCount (Ljava/util/concurrent/atomic/AtomicLong; h(Lcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/node/settings/NodeSettingsService;)V *Lcom/groupbyinc/flux/common/inject/Inject; 1(Lcom/groupbyinc/flux/common/settings/Settings;)V K N
O &java/util/concurrent/ConcurrentHashMap Q ()V K S
R T V &java/util/concurrent/atomic/AtomicLong X (J)V K Z
Y [ I J ] ,com/groupbyinc/flux/common/settings/Settings _ getAsMemory U(Ljava/lang/String;Ljava/lang/String;)Lcom/groupbyinc/flux/common/unit/ByteSizeValue; a b
` c -com/groupbyinc/flux/common/unit/ByteSizeValue e toString ()Ljava/lang/String; g h
f i java/lang/String k getAsDouble 8(Ljava/lang/String;Ljava/lang/Double;)Ljava/lang/Double; m n
` o java/lang/Double q doubleValue ()D s t
r u 3com/groupbyinc/flux/indices/breaker/BreakerSettings w fielddata y bytes ()J { |
f } valueOf (D)Ljava/lang/Double; ?
r ? get 8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ? ?
` ?
parseValue L(Ljava/lang/String;)Lcom/groupbyinc/flux/common/breaker/CircuitBreaker$Type; ? ?
? O(Ljava/lang/String;JDLcom/groupbyinc/flux/common/breaker/CircuitBreaker$Type;)V K ?
x ? G F ? request ? H F ? parent ? PARENT 8Lcom/groupbyinc/flux/common/breaker/CircuitBreaker$Type; ? ?
? E F ? logger -Lcom/groupbyinc/flux/common/logging/ESLogger; ? ? ? +com/groupbyinc/flux/common/logging/ESLogger ? isTraceEnabled ()Z ? ? ? ? 'parent circuit breaker with settings {} ? java/lang/Object ? trace ((Ljava/lang/String;[Ljava/lang/Object;)V ? ? ? ? registerBreaker 8(Lcom/groupbyinc/flux/indices/breaker/BreakerSettings;)V ? ?
? G(Lcom/groupbyinc/flux/indices/breaker/HierarchyCircuitBreakerService;)V K ?
? addListener C(Lcom/groupbyinc/flux/node/settings/NodeSettingsService$Listener;)V ? ?
? this DLcom/groupbyinc/flux/indices/breaker/HierarchyCircuitBreakerService; settings .Lcom/groupbyinc/flux/common/settings/Settings; nodeSettingsService 7Lcom/groupbyinc/flux/node/settings/NodeSettingsService; "compatibilityFielddataLimitDefault compatibilityFielddataLimit /Lcom/groupbyinc/flux/common/unit/ByteSizeValue; %compatibilityFielddataOverheadDefault compatibilityFielddataOverhead Ljava/lang/Double; validateSettings 9([Lcom/groupbyinc/flux/indices/breaker/BreakerSettings;)V java/lang/IllegalStateException ? 6[Lcom/groupbyinc/flux/indices/breaker/BreakerSettings; ? getLimit ? |
x ????????? getOverhead ? t
x ? java/lang/StringBuilder ?
? T Child breaker overhead ? append -(Ljava/lang/String;)Ljava/lang/StringBuilder; ? ?
? ? -(Ljava/lang/Object;)Ljava/lang/StringBuilder; ? ?
? ? must be non-negative ?
? i (Ljava/lang/String;)V K ?
? ?
childSettings childrenSettings
getBreaker G(Ljava/lang/String;)Lcom/groupbyinc/flux/common/breaker/CircuitBreaker; "java/util/concurrent/ConcurrentMap ? &(Ljava/lang/Object;)Ljava/lang/Object; ? ? ? ? name stats >()Lcom/groupbyinc/flux/indices/breaker/AllCircuitBreakerStats; java/util/ArrayList ?
? T values ()Ljava/util/Collection; ? ? ? ? java/util/Collection ? iterator ()Ljava/util/Iterator; ? ? ? ? java/util/List ? java/util/Iterator hasNext ? next ()Ljava/lang/Object; getName h
M(Ljava/lang/String;)Lcom/groupbyinc/flux/indices/breaker/CircuitBreakerStats; ?
add (Ljava/lang/Object;)Z ? getUsed | 7com/groupbyinc/flux/indices/breaker/CircuitBreakerStats ? |
Y (Ljava/lang/String;JJDJ)V K
:com/groupbyinc/flux/indices/breaker/AllCircuitBreakerStats size ()I ?! toArray (([Ljava/lang/Object;)[Ljava/lang/Object;#$ ?% :[Lcom/groupbyinc/flux/indices/breaker/CircuitBreakerStats;' =([Lcom/groupbyinc/flux/indices/breaker/CircuitBreakerStats;)V K)
* breaker 3Lcom/groupbyinc/flux/common/breaker/CircuitBreaker; parentEstimated J allStats KLjava/util/List; Ljava/util/List; ? ? getTrippedCount5 | 6 checkParentLimit ;com/groupbyinc/flux/common/breaker/CircuitBreakingException9 incrementAndGet; |
Y< #[parent] Data too large, data for [> !] would be larger than limit of [@ (J)Ljava/lang/StringBuilder; ?B
?C /E
f [ ]H (Ljava/lang/String;JJ)V KJ
:K label totalUsed parentLimit ? ?
P getType :()Lcom/groupbyinc/flux/common/breaker/CircuitBreaker$Type;RS
xT NOOPV ?
W 5com/groupbyinc/flux/common/breaker/NoopCircuitBreakerY
x
Z ? put 8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;]^ ?_