public class com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor implements okhttp3.Interceptor
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor
super_class: java.lang.Object
{
private static final java.lang.String ;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "x-ms-logging-context"
private static final java.util.concurrent.ConcurrentMap<java.lang.String, java.util.concurrent.locks.ReentrantLock> REENTRANT_LOCK_MAP;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Ljava/util/concurrent/locks/ReentrantLock;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/microsoft/azure/management/resources/fluentcore/utils/ResourceManagerThrottlingInterceptor;
public okhttp3.Response intercept(okhttp3.Interceptor$Chain);
descriptor: (Lokhttp3/Interceptor$Chain;)Lokhttp3/Response;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=12, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
invokevirtual okhttp3.Request.url:()Lokhttp3/HttpUrl;
invokevirtual okhttp3.HttpUrl.url:()Ljava/net/URL;
invokevirtual java.net.URL.getPath:()Ljava/lang/String;
ldc "subscriptions"
invokestatic com.microsoft.azure.management.resources.fluentcore.arm.ResourceUtils.extractFromResourceId:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: ldc "global"
astore 2
3: StackMap locals: java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "|"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
invokevirtual okhttp3.Request.method:()Ljava/lang/String;
getstatic java.util.Locale.ROOT:Ljava/util/Locale;
invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 4: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
new java.util.concurrent.locks.ReentrantLock
dup
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
dup
astore 4
monitorenter
6: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.util.concurrent.locks.ReentrantLock.isLocked:()Z
ifeq 8
7: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.lang.Object.wait:()V
8: StackMap locals: java.lang.String java.util.concurrent.locks.ReentrantLock
StackMap stack:
aload 4
monitorexit
9: goto 14
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 4
monitorexit
11: athrow
12: StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String
StackMap stack: java.lang.InterruptedException
astore 4
start local 4 13: new java.io.IOException
dup
aload 4
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 4 14: StackMap locals:
StackMap stack:
aload 1
aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
invokeinterface okhttp3.Interceptor$Chain.proceed:(Lokhttp3/Request;)Lokhttp3/Response;
astore 4
start local 4 15: aload 4
invokevirtual okhttp3.Response.code:()I
sipush 429
if_icmpeq 17
16: aload 4
areturn
17: StackMap locals: okhttp3.Response
StackMap stack:
getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
dup
astore 5
monitorenter
18: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.util.concurrent.locks.ReentrantLock.isLocked:()Z
ifeq 23
19: aload 4
invokevirtual okhttp3.Response.close:()V
20: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.lang.Object.wait:()V
21: aload 1
aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
invokeinterface okhttp3.Interceptor$Chain.proceed:(Lokhttp3/Request;)Lokhttp3/Response;
aload 5
monitorexit
22: areturn
23: StackMap locals: java.util.concurrent.locks.ReentrantLock
StackMap stack:
getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
24: aload 5
monitorexit
25: goto 30
StackMap locals:
StackMap stack: java.lang.Throwable
26: aload 5
monitorexit
27: athrow
28: StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response
StackMap stack: java.lang.InterruptedException
astore 5
start local 5 29: new java.io.IOException
dup
aload 5
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 30: StackMap locals:
StackMap stack:
aload 4
ldc "Retry-After"
invokevirtual okhttp3.Response.header:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 31: iconst_0
istore 6
start local 6 32: aload 5
ifnull 41
33: aconst_null
astore 7
start local 7 34: new com.microsoft.rest.DateTimeRfc1123
dup
aload 5
invokespecial com.microsoft.rest.DateTimeRfc1123.<init>:(Ljava/lang/String;)V
invokevirtual com.microsoft.rest.DateTimeRfc1123.dateTime:()Lorg/joda/time/DateTime;
astore 7
35: goto 37
StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response java.lang.String int org.joda.time.DateTime
StackMap stack: java.lang.Exception
36: pop
37: StackMap locals:
StackMap stack:
aload 7
ifnonnull 40
38: aload 5
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
istore 6
39: goto 41
40: StackMap locals:
StackMap stack:
new org.joda.time.Duration
dup
aconst_null
aload 7
invokespecial org.joda.time.Duration.<init>:(Lorg/joda/time/ReadableInstant;Lorg/joda/time/ReadableInstant;)V
invokevirtual org.joda.time.Duration.toStandardSeconds:()Lorg/joda/time/Seconds;
invokevirtual org.joda.time.Seconds.getSeconds:()I
istore 6
end local 7 41: StackMap locals:
StackMap stack:
iload 6
ifgt 51
42: ldc "try again after '([0-9]*)' minutes"
iconst_2
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
astore 7
start local 7 43: aload 7
aload 0
aload 4
invokevirtual okhttp3.Response.body:()Lokhttp3/ResponseBody;
invokevirtual com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.content:(Lokhttp3/ResponseBody;)Ljava/lang/String;
invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
astore 8
start local 8 44: aload 8
invokevirtual java.util.regex.Matcher.find:()Z
ifeq 47
45: getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
aload 8
iconst_1
invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
i2l
invokevirtual java.util.concurrent.TimeUnit.toSeconds:(J)J
l2i
istore 6
46: goto 51
47: StackMap locals: java.util.regex.Pattern java.util.regex.Matcher
StackMap stack:
ldc "try again after '([0-9]*)' seconds"
iconst_2
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
astore 7
48: aload 7
aload 0
aload 4
invokevirtual okhttp3.Response.body:()Lokhttp3/ResponseBody;
invokevirtual com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.content:(Lokhttp3/ResponseBody;)Ljava/lang/String;
invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
astore 8
49: aload 8
invokevirtual java.util.regex.Matcher.find:()Z
ifeq 51
50: aload 8
iconst_1
invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
istore 6
end local 8 end local 7 51: StackMap locals:
StackMap stack:
iload 6
ifle 59
52: aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
ldc "x-ms-logging-context"
invokevirtual okhttp3.Request.header:(Ljava/lang/String;)Ljava/lang/String;
astore 7
start local 7 53: aload 7
ifnonnull 55
54: ldc ""
astore 7
55: StackMap locals: java.lang.String
StackMap stack:
aload 7
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/String;)Lorg/slf4j/Logger;
56: new java.lang.StringBuilder
dup
ldc "Azure Resource Manager read/write per hour limit reached. Will retry in: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " seconds"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;)V
57: aload 4
invokevirtual okhttp3.Response.close:()V
58: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
iload 6
i2l
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
ldc 100
ladd
l2i
invokestatic com.microsoft.azure.management.resources.fluentcore.utils.SdkContext.sleep:(I)V
end local 7 59: StackMap locals:
StackMap stack:
aload 1
aload 1
invokeinterface okhttp3.Interceptor$Chain.request:()Lokhttp3/Request;
invokeinterface okhttp3.Interceptor$Chain.proceed:(Lokhttp3/Request;)Lokhttp3/Response;
astore 10
60: aload 4
invokevirtual okhttp3.Response.close:()V
61: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
dup
astore 11
monitorenter
62: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
63: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.lang.Object.notifyAll:()V
64: aload 11
monitorexit
65: goto 68
StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response java.lang.String int top top top okhttp3.Response java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
66: aload 11
monitorexit
67: athrow
68: StackMap locals:
StackMap stack:
aload 10
areturn
end local 6 end local 5 69: StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response
StackMap stack: java.lang.Throwable
astore 5
start local 5 70: new java.io.IOException
dup
aload 5
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 71: StackMap locals:
StackMap stack: java.lang.Throwable
astore 9
72: aload 4
invokevirtual okhttp3.Response.close:()V
73: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
dup
astore 11
monitorenter
74: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
75: getstatic com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor.REENTRANT_LOCK_MAP:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.locks.ReentrantLock
invokevirtual java.lang.Object.notifyAll:()V
76: aload 11
monitorexit
77: goto 80
StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response top top top top java.lang.Throwable top java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
78: aload 11
monitorexit
79: athrow
80: StackMap locals: com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor okhttp3.Interceptor$Chain java.lang.String java.lang.String okhttp3.Response top top top top java.lang.Throwable
StackMap stack:
aload 9
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 81 0 this Lcom/microsoft/azure/management/resources/fluentcore/utils/ResourceManagerThrottlingInterceptor;
0 81 1 chain Lokhttp3/Interceptor$Chain;
1 81 2 subscriptionId Ljava/lang/String;
4 81 3 subscriptionAndMethod Ljava/lang/String;
13 14 4 e Ljava/lang/InterruptedException;
15 81 4 response Lokhttp3/Response;
29 30 5 e Ljava/lang/InterruptedException;
31 69 5 retryAfterHeader Ljava/lang/String;
32 69 6 retryAfter I
34 41 7 retryWhen Lorg/joda/time/DateTime;
43 51 7 pattern Ljava/util/regex/Pattern;
44 51 8 matcher Ljava/util/regex/Matcher;
53 59 7 context Ljava/lang/String;
70 71 5 t Ljava/lang/Throwable;
Exception table:
from to target type
6 9 10 any
10 11 10 any
5 12 12 Class java.lang.InterruptedException
18 22 26 any
23 25 26 any
26 27 26 any
17 22 28 Class java.lang.InterruptedException
23 28 28 Class java.lang.InterruptedException
34 35 36 Class java.lang.Exception
62 65 66 any
66 67 66 any
30 60 69 Class java.lang.Throwable
30 60 71 any
69 71 71 any
74 77 78 any
78 79 78 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chain
private java.lang.String content(okhttp3.ResponseBody);
descriptor: (Lokhttp3/ResponseBody;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual okhttp3.ResponseBody.source:()Lokio/BufferedSource;
astore 2
start local 2 3: aload 2
ldc 9223372036854775807
invokeinterface okio.BufferedSource.request:(J)Z
pop
4: aload 2
invokeinterface okio.BufferedSource.buffer:()Lokio/Buffer;
astore 3
start local 3 5: aload 3
invokevirtual okio.Buffer.readUtf8:()Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/microsoft/azure/management/resources/fluentcore/utils/ResourceManagerThrottlingInterceptor;
0 6 1 responseBody Lokhttp3/ResponseBody;
3 6 2 source Lokio/BufferedSource;
5 6 3 buffer Lokio/Buffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
responseBody
}
SourceFile: "ResourceManagerThrottlingInterceptor.java"
InnerClasses:
public abstract Chain = okhttp3.Interceptor$Chain of okhttp3.Interceptor