public class com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl implements com.netflix.hystrix.HystrixCircuitBreaker
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl
super_class: java.lang.Object
{
private final com.netflix.hystrix.HystrixCommandProperties properties;
descriptor: Lcom/netflix/hystrix/HystrixCommandProperties;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.netflix.hystrix.HystrixCommandMetrics metrics;
descriptor: Lcom/netflix/hystrix/HystrixCommandMetrics;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.atomic.AtomicBoolean circuitOpen;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.atomic.AtomicLong circuitOpenedOrLastTestedTime;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0002) ACC_PRIVATE
protected void <init>(com.netflix.hystrix.HystrixCommandKey, com.netflix.hystrix.HystrixCommandGroupKey, com.netflix.hystrix.HystrixCommandProperties, com.netflix.hystrix.HystrixCommandMetrics);
descriptor: (Lcom/netflix/hystrix/HystrixCommandKey;Lcom/netflix/hystrix/HystrixCommandGroupKey;Lcom/netflix/hystrix/HystrixCommandProperties;Lcom/netflix/hystrix/HystrixCommandMetrics;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
putfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpenedOrLastTestedTime:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
aload 3
putfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
4: aload 0
aload 4
putfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.metrics:Lcom/netflix/hystrix/HystrixCommandMetrics;
5: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/netflix/hystrix/HystrixCircuitBreaker$HystrixCircuitBreakerImpl;
0 6 1 key Lcom/netflix/hystrix/HystrixCommandKey;
0 6 2 commandGroup Lcom/netflix/hystrix/HystrixCommandGroupKey;
0 6 3 properties Lcom/netflix/hystrix/HystrixCommandProperties;
0 6 4 metrics Lcom/netflix/hystrix/HystrixCommandMetrics;
MethodParameters:
Name Flags
key
commandGroup
properties
metrics
public void markSuccess();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 3
1: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
iconst_0
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 3
2: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.metrics:Lcom/netflix/hystrix/HystrixCommandMetrics;
invokevirtual com.netflix.hystrix.HystrixCommandMetrics.resetStream:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/netflix/hystrix/HystrixCircuitBreaker$HystrixCircuitBreakerImpl;
public boolean allowRequest();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
invokevirtual com.netflix.hystrix.HystrixCommandProperties.circuitBreakerForceOpen:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
invokevirtual com.netflix.hystrix.HystrixCommandProperties.circuitBreakerForceClosed:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 5
3: aload 0
invokevirtual com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.isOpen:()Z
pop
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.isOpen:()Z
ifeq 6
aload 0
invokevirtual com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.allowSingleTest:()Z
ifne 6
iconst_0
ireturn
StackMap locals:
StackMap stack:
6: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/HystrixCircuitBreaker$HystrixCircuitBreakerImpl;
public boolean allowSingleTest();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpenedOrLastTestedTime:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 1
start local 1 1: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 4
invokestatic java.lang.System.currentTimeMillis:()J
lload 1
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
invokevirtual com.netflix.hystrix.HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
i2l
ladd
lcmp
ifle 4
2: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpenedOrLastTestedTime:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokestatic java.lang.System.currentTimeMillis:()J
invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
ifeq 4
3: iconst_1
ireturn
4: StackMap locals: long
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/hystrix/HystrixCircuitBreaker$HystrixCircuitBreakerImpl;
1 5 1 timeCircuitOpenedOrWasLastTested J
public boolean isOpen();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.metrics:Lcom/netflix/hystrix/HystrixCommandMetrics;
invokevirtual com.netflix.hystrix.HystrixCommandMetrics.getHealthCounts:()Lcom/netflix/hystrix/HystrixCommandMetrics$HealthCounts;
astore 1
start local 1 3: aload 1
invokevirtual com.netflix.hystrix.HystrixCommandMetrics$HealthCounts.getTotalRequests:()J
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
invokevirtual com.netflix.hystrix.HystrixCommandProperties.circuitBreakerRequestVolumeThreshold:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
i2l
lcmp
ifge 5
4: iconst_0
ireturn
5: StackMap locals: com.netflix.hystrix.HystrixCommandMetrics$HealthCounts
StackMap stack:
aload 1
invokevirtual com.netflix.hystrix.HystrixCommandMetrics$HealthCounts.getErrorPercentage:()I
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.properties:Lcom/netflix/hystrix/HystrixCommandProperties;
invokevirtual com.netflix.hystrix.HystrixCommandProperties.circuitBreakerErrorThresholdPercentage:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmpge 7
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 10
8: aload 0
getfield com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl.circuitOpenedOrLastTestedTime:Ljava/util/concurrent/atomic/AtomicLong;
invokestatic java.lang.System.currentTimeMillis:()J
invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
9: iconst_1
ireturn
10: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/netflix/hystrix/HystrixCircuitBreaker$HystrixCircuitBreakerImpl;
3 11 1 health Lcom/netflix/hystrix/HystrixCommandMetrics$HealthCounts;
}
SourceFile: "HystrixCircuitBreaker.java"
NestHost: com.netflix.hystrix.HystrixCircuitBreaker
InnerClasses:
public HystrixCircuitBreakerImpl = com.netflix.hystrix.HystrixCircuitBreaker$HystrixCircuitBreakerImpl of com.netflix.hystrix.HystrixCircuitBreaker
public HealthCounts = com.netflix.hystrix.HystrixCommandMetrics$HealthCounts of com.netflix.hystrix.HystrixCommandMetrics