public class com.netflix.hystrix.collapser.RequestBatch<BatchReturnType, ResponseType, RequestArgumentType>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.hystrix.collapser.RequestBatch
super_class: java.lang.Object
{
private static final org.slf4j.Logger logger;
descriptor: Lorg/slf4j/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType> commandCollapser;
descriptor: Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
private final int maxBatchSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicBoolean batchStarted;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.ConcurrentMap<RequestArgumentType, com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>> argumentMap;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<TRequestArgumentType;Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;
private final com.netflix.hystrix.HystrixCollapserProperties properties;
descriptor: Lcom/netflix/hystrix/HystrixCollapserProperties;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.locks.ReentrantReadWriteLock batchLock;
descriptor: Ljava/util/concurrent/locks/ReentrantReadWriteLock;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/netflix/hystrix/collapser/RequestBatch;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.netflix.hystrix.HystrixCollapserProperties, com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType>, );
descriptor: (Lcom/netflix/hystrix/HystrixCollapserProperties;Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
3: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
4: aload 0
new java.util.concurrent.locks.ReentrantReadWriteLock
dup
invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
putfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
5: aload 0
aload 1
putfield com.netflix.hystrix.collapser.RequestBatch.properties:Lcom/netflix/hystrix/HystrixCollapserProperties;
6: aload 0
aload 2
putfield com.netflix.hystrix.collapser.RequestBatch.commandCollapser:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
7: aload 0
iload 3
putfield com.netflix.hystrix.collapser.RequestBatch.maxBatchSize:I
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
0 9 1 properties Lcom/netflix/hystrix/HystrixCollapserProperties;
0 9 2 commandCollapser Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
0 9 3 maxBatchSize I
Signature: (Lcom/netflix/hystrix/HystrixCollapserProperties;Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;I)V
MethodParameters:
Name Flags
properties
commandCollapser
maxBatchSize
public rx.Observable<ResponseType> offer(RequestArgumentType);
descriptor: (Ljava/lang/Object;)Lrx/Observable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.tryLock:()Z
ifeq 27
3: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 6
4: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
5: aconst_null
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.size:()I
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.maxBatchSize:I
if_icmplt 9
7: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
8: aconst_null
areturn
9: StackMap locals:
StackMap stack:
new com.netflix.hystrix.collapser.CollapsedRequestSubject
dup
aload 1
aload 0
invokespecial com.netflix.hystrix.collapser.CollapsedRequestSubject.<init>:(Ljava/lang/Object;Lcom/netflix/hystrix/collapser/RequestBatch;)V
10: astore 2
start local 2 11: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 2
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.netflix.hystrix.collapser.CollapsedRequestSubject
astore 3
start local 3 12: aload 3
ifnull 21
13: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.properties:Lcom/netflix/hystrix/HystrixCollapserProperties;
invokevirtual com.netflix.hystrix.HystrixCollapserProperties.requestCacheEnabled:()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
istore 4
start local 4 14: iload 4
ifeq 18
15: aload 3
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.toObservable:()Lrx/Observable;
astore 6
16: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
17: aload 6
areturn
18: StackMap locals: com.netflix.hystrix.collapser.CollapsedRequestSubject com.netflix.hystrix.collapser.CollapsedRequestSubject int
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Duplicate argument in collapser batch : ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] This is not supported. Please turn request-caching on for HystrixCollapser:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.commandCollapser:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.getCollapserKey:()Lcom/netflix/hystrix/HystrixCollapserKey;
invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " or prevent duplicates from making it into the batch!"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
invokestatic rx.Observable.error:(Ljava/lang/Throwable;)Lrx/Observable;
astore 6
19: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
20: aload 6
areturn
end local 4 21: StackMap locals:
StackMap stack:
aload 2
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.toObservable:()Lrx/Observable;
astore 6
22: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
23: aload 6
areturn
end local 3 end local 2 24: StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.lang.Object
StackMap stack: java.lang.Throwable
astore 5
25: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
26: aload 5
athrow
27: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
0 28 1 arg TRequestArgumentType;
11 24 2 collapsedRequest Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TResponseType;TRequestArgumentType;>;
12 24 3 existing Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TResponseType;TRequestArgumentType;>;
14 21 4 requestCachingEnabled Z
Exception table:
from to target type
3 4 24 any
6 7 24 any
9 16 24 any
18 19 24 any
21 22 24 any
Signature: (TRequestArgumentType;)Lrx/Observable<TResponseType;>;
MethodParameters:
Name Flags
arg
void remove();
descriptor: (Ljava/lang/Object;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.tryLock:()Z
ifeq 12
3: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifeq 6
4: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
7: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
8: astore 2
9: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
10: aload 2
athrow
11: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock:()V
12: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
0 13 1 arg TRequestArgumentType;
Exception table:
from to target type
3 4 8 any
6 8 8 any
Signature: (TRequestArgumentType;)V
MethodParameters:
Name Flags
arg
public void executeBatchIfNotAlreadyStarted();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 35
1: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock:()V
2: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.commandCollapser:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.shardRequests:(Ljava/util/Collection;)Ljava/util/Collection;
astore 1
start local 1 3: aload 1
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 19
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection top java.util.Iterator
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Collection
astore 2
start local 2 5: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.commandCollapser:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
aload 2
invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.createObservableCommand:(Ljava/util/Collection;)Lrx/Observable;
astore 4
start local 4 6: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.commandCollapser:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
aload 4
aload 2
invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.mapResponseToRequests:(Lrx/Observable;Ljava/util/Collection;)Lrx/Observable;
new com.netflix.hystrix.collapser.RequestBatch$1
dup
aload 0
invokespecial com.netflix.hystrix.collapser.RequestBatch$1.<init>:(Lcom/netflix/hystrix/collapser/RequestBatch;)V
invokevirtual rx.Observable.doOnError:(Lrx/functions/Action1;)Lrx/Observable;
7: new com.netflix.hystrix.collapser.RequestBatch$2
dup
aload 0
aload 2
invokespecial com.netflix.hystrix.collapser.RequestBatch$2.<init>:(Lcom/netflix/hystrix/collapser/RequestBatch;Ljava/util/Collection;)V
invokevirtual rx.Observable.doOnCompleted:(Lrx/functions/Action0;)Lrx/Observable;
8: invokevirtual rx.Observable.subscribe:()Lrx/Subscription;
pop
end local 4 9: goto 19
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection java.util.Collection java.util.Iterator
StackMap stack: java.lang.Exception
10: astore 4
start local 4 11: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
ldc "Exception while creating and queueing command with batch."
aload 4
invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
12: aload 2
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 18
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection java.util.Collection java.util.Iterator java.lang.Exception top java.util.Iterator
StackMap stack:
13: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.netflix.hystrix.HystrixCollapser$CollapsedRequest
astore 5
start local 5 14: aload 5
aload 4
invokeinterface com.netflix.hystrix.HystrixCollapser$CollapsedRequest.setException:(Ljava/lang/Exception;)V
15: goto 18
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection java.util.Collection java.util.Iterator java.lang.Exception com.netflix.hystrix.HystrixCollapser$CollapsedRequest java.util.Iterator
StackMap stack: java.lang.IllegalStateException
16: astore 7
start local 7 17: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
ldc "Failed trying to setException on CollapsedRequest"
aload 7
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 7 end local 5 18: StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection java.util.Collection java.util.Iterator java.lang.Exception top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
end local 4 end local 2 19: StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.util.Collection top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 1 20: goto 34
StackMap locals: com.netflix.hystrix.collapser.RequestBatch
StackMap stack: java.lang.Exception
21: astore 1
start local 1 22: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
ldc "Exception while sharding requests."
aload 1
invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
23: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 29
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.lang.Exception top java.util.Iterator
StackMap stack:
24: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.netflix.hystrix.HystrixCollapser$CollapsedRequest
astore 2
start local 2 25: aload 2
aload 1
invokeinterface com.netflix.hystrix.HystrixCollapser$CollapsedRequest.setException:(Ljava/lang/Exception;)V
26: goto 29
StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.lang.Exception com.netflix.hystrix.HystrixCollapser$CollapsedRequest java.util.Iterator
StackMap stack: java.lang.IllegalStateException
27: astore 4
start local 4 28: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
ldc "Failed trying to setException on CollapsedRequest"
aload 4
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 4 end local 2 29: StackMap locals: com.netflix.hystrix.collapser.RequestBatch java.lang.Exception top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 24
end local 1 30: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
goto 35
31: StackMap locals: com.netflix.hystrix.collapser.RequestBatch
StackMap stack: java.lang.Throwable
astore 8
32: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
33: aload 8
athrow
34: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
35: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
3 20 1 shards Ljava/util/Collection<Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;>;
5 19 2 shardRequests Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;
6 9 4 o Lrx/Observable<TBatchReturnType;>;
11 19 4 e Ljava/lang/Exception;
14 18 5 request Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;
17 18 7 e2 Ljava/lang/IllegalStateException;
22 30 1 e Ljava/lang/Exception;
25 29 2 request Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;
28 29 4 e2 Ljava/lang/IllegalStateException;
Exception table:
from to target type
5 9 10 Class java.lang.Exception
14 15 16 Class java.lang.IllegalStateException
2 20 21 Class java.lang.Exception
25 26 27 Class java.lang.IllegalStateException
2 30 31 any
public void shutdown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchStarted:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 17
1: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock:()V
2: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.size:()I
ifle 16
3: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
new java.lang.StringBuilder
dup
ldc "Requests still exist in queue but will not be executed due to RequestCollapser shutdown: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.size:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
4: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 11
StackMap locals: com.netflix.hystrix.collapser.RequestBatch top java.util.Iterator
StackMap stack:
5: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.netflix.hystrix.HystrixCollapser$CollapsedRequest
astore 1
start local 1 6: aload 1
checkcast com.netflix.hystrix.collapser.CollapsedRequestSubject
new java.lang.IllegalStateException
dup
ldc "Requests not executed before shutdown."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.setExceptionIfResponseNotReceived:(Ljava/lang/Exception;)V
7: goto 10
StackMap locals: com.netflix.hystrix.collapser.RequestBatch com.netflix.hystrix.HystrixCollapser$CollapsedRequest java.util.Iterator
StackMap stack: java.lang.Exception
8: astore 3
start local 3 9: getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
ldc "Failed to setException on CollapsedRequestFutureImpl instances."
aload 3
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 3 10: StackMap locals:
StackMap stack:
getstatic com.netflix.hystrix.collapser.RequestBatch.logger:Lorg/slf4j/Logger;
new java.lang.StringBuilder
dup
ldc "Request still in queue but not be executed due to RequestCollapser shutdown. Argument => "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface com.netflix.hystrix.HystrixCollapser$CollapsedRequest.getArgument:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " Request Object => "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 1 11: StackMap locals: com.netflix.hystrix.collapser.RequestBatch top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
12: goto 16
StackMap locals: com.netflix.hystrix.collapser.RequestBatch
StackMap stack: java.lang.Throwable
13: astore 4
14: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
15: aload 4
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.batchLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
17: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
6 11 1 request Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;
9 10 3 e Ljava/lang/Exception;
Exception table:
from to target type
6 7 8 Class java.lang.Exception
2 13 13 any
public int getSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.RequestBatch.argumentMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/collapser/RequestBatch<TBatchReturnType;TResponseType;TRequestArgumentType;>;
}
Signature: <BatchReturnType:Ljava/lang/Object;ResponseType:Ljava/lang/Object;RequestArgumentType:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "RequestBatch.java"
NestMembers:
com.netflix.hystrix.collapser.RequestBatch$1 com.netflix.hystrix.collapser.RequestBatch$2
InnerClasses:
public abstract CollapsedRequest = com.netflix.hystrix.HystrixCollapser$CollapsedRequest of com.netflix.hystrix.HystrixCollapser
com.netflix.hystrix.collapser.RequestBatch$1
com.netflix.hystrix.collapser.RequestBatch$2
public ReadLock = java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock of java.util.concurrent.locks.ReentrantReadWriteLock
public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock