public final class com.zaxxer.hikari.pool.HikariPool extends com.zaxxer.hikari.pool.PoolBase implements com.zaxxer.hikari.HikariPoolMXBean, com.zaxxer.hikari.util.ConcurrentBag$IBagStateListener
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.zaxxer.hikari.pool.HikariPool
super_class: com.zaxxer.hikari.pool.PoolBase
{
private final org.slf4j.Logger logger;
descriptor: Lorg/slf4j/Logger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public static final int POOL_NORMAL;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
public static final int POOL_SUSPENDED;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
public static final int POOL_SHUTDOWN;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 2
public volatile int poolState;
descriptor: I
flags: (0x0041) ACC_PUBLIC, ACC_VOLATILE
private final long aliveBypassWindowMs;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long housekeepingPeriodMs;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final java.lang.String EVICTED_CONNECTION_MESSAGE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "(connection was evicted)"
private static final java.lang.String DEAD_CONNECTION_MESSAGE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "(connection is dead)"
private final com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator poolEntryCreator;
descriptor: Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator postFillPoolEntryCreator;
descriptor: Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Collection<java.lang.Runnable> addConnectionQueueReadOnlyView;
descriptor: Ljava/util/Collection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Collection<Ljava/lang/Runnable;>;
private final java.util.concurrent.ThreadPoolExecutor addConnectionExecutor;
descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.ThreadPoolExecutor closeConnectionExecutor;
descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.zaxxer.hikari.util.ConcurrentBag<com.zaxxer.hikari.pool.PoolEntry> connectionBag;
descriptor: Lcom/zaxxer/hikari/util/ConcurrentBag;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/zaxxer/hikari/util/ConcurrentBag<Lcom/zaxxer/hikari/pool/PoolEntry;>;
private final com.zaxxer.hikari.pool.ProxyLeakTaskFactory leakTaskFactory;
descriptor: Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.zaxxer.hikari.util.SuspendResumeLock suspendResumeLock;
descriptor: Lcom/zaxxer/hikari/util/SuspendResumeLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.ScheduledExecutorService houseKeepingExecutorService;
descriptor: Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.ScheduledFuture<?> houseKeeperTask;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
public void <init>(com.zaxxer.hikari.HikariConfig);
descriptor: (Lcom/zaxxer/hikari/HikariConfig;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=7, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial com.zaxxer.hikari.pool.PoolBase.<init>:(Lcom/zaxxer/hikari/HikariConfig;)V
1: aload 0
ldc Lcom/zaxxer/hikari/pool/HikariPool;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
2: aload 0
ldc "com.zaxxer.hikari.aliveBypassWindowMs"
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
ldc 500
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic java.lang.Long.getLong:(Ljava/lang/String;J)Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
putfield com.zaxxer.hikari.pool.HikariPool.aliveBypassWindowMs:J
3: aload 0
ldc "com.zaxxer.hikari.housekeeping.periodMs"
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
ldc 30
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic java.lang.Long.getLong:(Ljava/lang/String;J)Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
putfield com.zaxxer.hikari.pool.HikariPool.housekeepingPeriodMs:J
4: aload 0
new com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
dup
aload 0
aconst_null
invokespecial com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/lang/String;)V
putfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
5: aload 0
new com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
dup
aload 0
ldc "After adding "
invokespecial com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/lang/String;)V
putfield com.zaxxer.hikari.pool.HikariPool.postFillPoolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
6: aload 0
new com.zaxxer.hikari.util.ConcurrentBag
dup
aload 0
invokespecial com.zaxxer.hikari.util.ConcurrentBag.<init>:(Lcom/zaxxer/hikari/util/ConcurrentBag$IBagStateListener;)V
putfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
7: aload 0
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.isAllowPoolSuspension:()Z
ifeq 8
new com.zaxxer.hikari.util.SuspendResumeLock
dup
invokespecial com.zaxxer.hikari.util.SuspendResumeLock.<init>:()V
goto 9
StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig
StackMap stack: com.zaxxer.hikari.pool.HikariPool
8: getstatic com.zaxxer.hikari.util.SuspendResumeLock.FAUX_LOCK:Lcom/zaxxer/hikari/util/SuspendResumeLock;
StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig
StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.util.SuspendResumeLock
9: putfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
10: aload 0
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.initializeHouseKeepingExecutorService:()Ljava/util/concurrent/ScheduledExecutorService;
putfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
11: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.checkFailFast:()V
12: aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getMetricsTrackerFactory:()Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
ifnull 15
13: aload 0
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getMetricsTrackerFactory:()Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
14: goto 16
15: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getMetricRegistry:()Ljava/lang/Object;
invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricRegistry:(Ljava/lang/Object;)V
16: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getHealthCheckRegistry:()Ljava/lang/Object;
invokevirtual com.zaxxer.hikari.pool.HikariPool.setHealthCheckRegistry:(Ljava/lang/Object;)V
17: aload 0
aload 0
iconst_1
invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
18: aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
astore 2
start local 2 19: aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
istore 3
start local 3 20: new java.util.concurrent.LinkedBlockingQueue
dup
iload 3
invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:(I)V
astore 4
start local 4 21: aload 0
aload 4
invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
putfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
22: aload 0
aload 4
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " connection adder"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
new java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy
dup
invokespecial java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.<init>:()V
invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(Ljava/util/concurrent/BlockingQueue;Ljava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
putfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
23: aload 0
iload 3
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " connection closer"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy
dup
invokespecial java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.<init>:()V
invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(ILjava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
putfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
24: aload 0
new com.zaxxer.hikari.pool.ProxyLeakTaskFactory
dup
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getLeakDetectionThreshold:()J
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
invokespecial com.zaxxer.hikari.pool.ProxyLeakTaskFactory.<init>:(JLjava/util/concurrent/ScheduledExecutorService;)V
putfield com.zaxxer.hikari.pool.HikariPool.leakTaskFactory:Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
25: aload 0
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
new com.zaxxer.hikari.pool.HikariPool$HouseKeeper
dup
aload 0
invokespecial com.zaxxer.hikari.pool.HikariPool$HouseKeeper.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;)V
ldc 100
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.housekeepingPeriodMs:J
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleWithFixedDelay:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
putfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
26: ldc "com.zaxxer.hikari.blockUntilFilled"
invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
ifeq 35
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
lconst_1
lcmp
ifle 35
27: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
bipush 16
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
invokestatic java.lang.Math.min:(II)I
invokevirtual java.util.concurrent.ThreadPoolExecutor.setCorePoolSize:(I)V
28: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
bipush 16
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
invokestatic java.lang.Math.min:(II)I
invokevirtual java.util.concurrent.ThreadPoolExecutor.setMaximumPoolSize:(I)V
29: invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
lstore 5
start local 5 30: goto 32
31: StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig java.util.concurrent.ThreadFactory int java.util.concurrent.LinkedBlockingQueue long
StackMap stack:
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
ldc 100
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic com.zaxxer.hikari.util.UtilityElf.quietlySleep:(J)V
32: StackMap locals:
StackMap stack:
lload 5
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
lcmp
ifge 33
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
aload 1
invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
if_icmplt 31
33: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.setCorePoolSize:(I)V
34: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.setMaximumPoolSize:(I)V
end local 5 35: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 36 1 config Lcom/zaxxer/hikari/HikariConfig;
19 36 2 threadFactory Ljava/util/concurrent/ThreadFactory;
20 36 3 maxPoolSize I
21 36 4 addConnectionQueue Ljava/util/concurrent/LinkedBlockingQueue<Ljava/lang/Runnable;>;
30 35 5 startTime J
MethodParameters:
Name Flags
config final
public java.sql.Connection getConnection();
descriptor: ()Ljava/sql/Connection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionTimeout:J
invokevirtual com.zaxxer.hikari.pool.HikariPool.getConnection:(J)Ljava/sql/Connection;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
Exceptions:
throws java.sql.SQLException
public java.sql.Connection getConnection(long);
descriptor: (J)Ljava/sql/Connection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.acquire:()V
1: invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
lstore 3
start local 3 2: lload 1
lstore 5
start local 5 3: StackMap locals: long long
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
lload 5
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.borrow:(JLjava/util/concurrent/TimeUnit;)Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;
checkcast com.zaxxer.hikari.pool.PoolEntry
astore 7
start local 7 4: aload 7
ifnonnull 6
5: goto 19
6: StackMap locals: com.zaxxer.hikari.pool.PoolEntry
StackMap stack:
invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
lstore 8
start local 8 7: aload 7
invokevirtual com.zaxxer.hikari.pool.PoolEntry.isMarkedEvicted:()Z
ifne 8
aload 7
getfield com.zaxxer.hikari.pool.PoolEntry.lastAccessed:J
lload 8
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(JJ)J
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.aliveBypassWindowMs:J
lcmp
ifle 13
aload 0
aload 7
getfield com.zaxxer.hikari.pool.PoolEntry.connection:Ljava/sql/Connection;
invokevirtual com.zaxxer.hikari.pool.HikariPool.isConnectionAlive:(Ljava/sql/Connection;)Z
ifne 13
8: StackMap locals: long
StackMap stack:
aload 0
aload 7
aload 7
invokevirtual com.zaxxer.hikari.pool.PoolEntry.isMarkedEvicted:()Z
ifeq 9
ldc "(connection was evicted)"
goto 10
StackMap locals: com.zaxxer.hikari.pool.HikariPool long long long com.zaxxer.hikari.pool.PoolEntry long
StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry
9: ldc "(connection is dead)"
StackMap locals: com.zaxxer.hikari.pool.HikariPool long long long com.zaxxer.hikari.pool.PoolEntry long
StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String
10: invokevirtual com.zaxxer.hikari.pool.HikariPool.closeConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
11: lload 1
lload 3
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
lsub
lstore 5
12: goto 17
13: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
aload 7
lload 3
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordBorrowStats:(Lcom/zaxxer/hikari/pool/PoolEntry;J)V
14: aload 7
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.leakTaskFactory:Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
aload 7
invokevirtual com.zaxxer.hikari.pool.ProxyLeakTaskFactory.schedule:(Lcom/zaxxer/hikari/pool/PoolEntry;)Lcom/zaxxer/hikari/pool/ProxyLeakTask;
lload 8
invokevirtual com.zaxxer.hikari.pool.PoolEntry.createProxyConnection:(Lcom/zaxxer/hikari/pool/ProxyLeakTask;J)Ljava/sql/Connection;
astore 11
15: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.release:()V
16: aload 11
areturn
end local 8 end local 7 17: StackMap locals:
StackMap stack:
lload 5
lconst_0
18: lcmp
ifgt 3
19: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
lload 3
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordBorrowTimeoutStats:(J)V
20: aload 0
lload 3
invokevirtual com.zaxxer.hikari.pool.HikariPool.createTimeoutException:(J)Ljava/sql/SQLException;
athrow
end local 5 21: StackMap locals: com.zaxxer.hikari.pool.HikariPool long long
StackMap stack: java.lang.InterruptedException
astore 5
start local 5 22: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
23: new java.sql.SQLException
dup
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " - Interrupted during connection acquisition"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 24: StackMap locals:
StackMap stack: java.lang.Throwable
astore 10
25: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.release:()V
26: aload 10
athrow
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 27 1 hardTimeout J
2 27 3 startTime J
3 21 5 timeout J
4 17 7 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
7 17 8 now J
22 24 5 e Ljava/lang/InterruptedException;
Exception table:
from to target type
2 15 21 Class java.lang.InterruptedException
17 21 21 Class java.lang.InterruptedException
2 15 24 any
17 24 24 any
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
hardTimeout final
public synchronized void shutdown();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=6, args_size=1
start local 0 0: aload 0
iconst_2
putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
ifnonnull 6
2: aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "After shutdown "
aastore
invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
3: aload 0
aload 0
iconst_0
invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
4: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
5: return
6: StackMap locals:
StackMap stack:
aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "Before shutdown "
aastore
invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
7: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
ifnull 10
8: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
9: aload 0
aconst_null
putfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
10: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnections:()V
11: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.shutdown:()V
12: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getLoginTimeout:()J
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.ThreadPoolExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
13: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.destroyHouseKeepingExecutorService:()V
14: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.close:()V
15: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " connection assassinator"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy
dup
invokespecial java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.<init>:()V
17: invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(ILjava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
astore 1
start local 1 18: invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
lstore 2
start local 2 19: StackMap locals: java.util.concurrent.ExecutorService long
StackMap stack:
aload 0
aload 1
invokevirtual com.zaxxer.hikari.pool.HikariPool.abortActiveConnections:(Ljava/util/concurrent/ExecutorService;)V
20: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnections:()V
21: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
ifle 28
lload 2
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
ldc 10
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
22: lcmp
iflt 19
end local 2 23: goto 28
24: StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService
StackMap stack: java.lang.Throwable
astore 4
25: aload 1
invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
26: aload 1
ldc 10
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
27: aload 4
athrow
28: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
29: aload 1
ldc 10
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
30: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.shutdownNetworkTimeoutExecutor:()V
31: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.shutdown:()V
32: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
ldc 10
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.ThreadPoolExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
end local 1 33: goto 39
34: StackMap locals: com.zaxxer.hikari.pool.HikariPool
StackMap stack: java.lang.Throwable
astore 5
35: aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "After shutdown "
aastore
invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
36: aload 0
aload 0
iconst_0
invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
37: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
38: aload 5
athrow
39: StackMap locals:
StackMap stack:
aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "After shutdown "
aastore
invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
40: aload 0
aload 0
iconst_0
invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
41: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
42: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 this Lcom/zaxxer/hikari/pool/HikariPool;
18 33 1 assassinExecutor Ljava/util/concurrent/ExecutorService;
19 23 2 start J
Exception table:
from to target type
18 24 24 any
0 2 34 any
6 34 34 any
Exceptions:
throws java.lang.InterruptedException
public void evictConnection(java.sql.Connection);
descriptor: (Ljava/sql/Connection;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 1
checkcast com.zaxxer.hikari.pool.ProxyConnection
astore 2
start local 2 1: aload 2
invokevirtual com.zaxxer.hikari.pool.ProxyConnection.cancelLeakTask:()V
2: aload 0
aload 2
invokevirtual com.zaxxer.hikari.pool.ProxyConnection.getPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
ldc "(connection evicted by user)"
aload 1
invokeinterface java.sql.Connection.isClosed:()Z
ifeq 3
iconst_0
goto 4
StackMap locals: com.zaxxer.hikari.pool.HikariPool java.sql.Connection com.zaxxer.hikari.pool.ProxyConnection
StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String
3: iconst_1
StackMap locals: com.zaxxer.hikari.pool.HikariPool java.sql.Connection com.zaxxer.hikari.pool.ProxyConnection
StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String int
4: invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
pop
5: goto 7
6: StackMap locals:
StackMap stack: java.sql.SQLException
pop
7: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 8 1 connection Ljava/sql/Connection;
1 8 2 proxyConnection Lcom/zaxxer/hikari/pool/ProxyConnection;
Exception table:
from to target type
2 5 6 Class java.sql.SQLException
MethodParameters:
Name Flags
connection
public void setMetricRegistry(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 3
aload 1
ldc "com.codahale.metrics.MetricRegistry"
invokestatic com.zaxxer.hikari.util.UtilityElf.safeIsAssignableFrom:(Ljava/lang/Object;Ljava/lang/String;)Z
ifeq 3
1: aload 0
new com.zaxxer.hikari.metrics.dropwizard.CodahaleMetricsTrackerFactory
dup
aload 1
checkcast com.codahale.metrics.MetricRegistry
invokespecial com.zaxxer.hikari.metrics.dropwizard.CodahaleMetricsTrackerFactory.<init>:(Lcom/codahale/metrics/MetricRegistry;)V
invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
2: goto 7
3: StackMap locals:
StackMap stack:
aload 1
ifnull 6
aload 1
ldc "io.micrometer.core.instrument.MeterRegistry"
invokestatic com.zaxxer.hikari.util.UtilityElf.safeIsAssignableFrom:(Ljava/lang/Object;Ljava/lang/String;)Z
ifeq 6
4: aload 0
new com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory
dup
aload 1
checkcast io.micrometer.core.instrument.MeterRegistry
invokespecial com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory.<init>:(Lio/micrometer/core/instrument/MeterRegistry;)V
invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
5: goto 7
6: StackMap locals:
StackMap stack:
aload 0
aconst_null
invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 8 1 metricRegistry Ljava/lang/Object;
MethodParameters:
Name Flags
metricRegistry
public void setMetricsTrackerFactory(com.zaxxer.hikari.metrics.MetricsTrackerFactory);
descriptor: (Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 3
1: aload 0
new com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate
dup
aload 1
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getPoolName:()Ljava/lang/String;
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getPoolStats:()Lcom/zaxxer/hikari/metrics/PoolStats;
invokeinterface com.zaxxer.hikari.metrics.MetricsTrackerFactory.create:(Ljava/lang/String;Lcom/zaxxer/hikari/metrics/PoolStats;)Lcom/zaxxer/hikari/metrics/IMetricsTracker;
invokespecial com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate.<init>:(Lcom/zaxxer/hikari/metrics/IMetricsTracker;)V
putfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
2: goto 4
3: StackMap locals:
StackMap stack:
aload 0
new com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate
dup
invokespecial com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate.<init>:()V
putfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 5 1 metricsTrackerFactory Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
MethodParameters:
Name Flags
metricsTrackerFactory
public void setHealthCheckRegistry(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tThe method registerHealthChecks(HikariPool, HikariConfig, HealthCheckRegistry) from the type CodahaleHealthChecker refers to the missing type HealthCheckRegistry\n\tHealthCheckRegistry cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
MethodParameters:
Name Flags
healthCheckRegistry
public void addBagItem(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
invokeinterface java.util.Collection.size:()I
isub
iflt 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: istore 2
start local 2 3: iload 2
ifeq 6
4: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
invokevirtual java.util.concurrent.ThreadPoolExecutor.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
pop
5: goto 7
6: StackMap locals: int
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Add connection elided, waiting {}, queue {}"
iconst_3
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aastore
dup
iconst_1
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
invokeinterface java.util.Collection.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 8 1 waiting I
3 8 2 shouldAdd Z
MethodParameters:
Name Flags
waiting final
public int getActiveConnections();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
iconst_1
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getCount:(I)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public int getIdleConnections();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
iconst_0
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getCount:(I)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public int getTotalConnections();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public int getThreadsAwaitingConnection();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getWaitingThreadCount:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public void softEvictConnections();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.values:()Ljava/util/List;
aload 0
invokedynamic accept(Lcom/zaxxer/hikari/pool/HikariPool;)Ljava/util/function/Consumer;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
com/zaxxer/hikari/pool/HikariPool.lambda$0(Lcom/zaxxer/hikari/pool/PoolEntry;)V (7)
(Lcom/zaxxer/hikari/pool/PoolEntry;)V
invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public synchronized void suspendPool();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
getstatic com.zaxxer.hikari.util.SuspendResumeLock.FAUX_LOCK:Lcom/zaxxer/hikari/util/SuspendResumeLock;
if_acmpne 2
1: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " - is not suspendable"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
iconst_1
if_icmpeq 5
3: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.suspend:()V
4: aload 0
iconst_1
putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/zaxxer/hikari/pool/HikariPool;
public synchronized void resumePool();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
iconst_1
if_icmpne 4
1: aload 0
iconst_0
putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
2: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.fillPool:()V
3: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.resume:()V
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/zaxxer/hikari/pool/HikariPool;
void logPoolState(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0080) ACC_VARARGS
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 7
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - {}stats (total={}, active={}, idle={}, waiting={})"
bipush 6
anewarray java.lang.Object
dup
iconst_0
2: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aastore
dup
iconst_1
aload 1
arraylength
ifle 3
aload 1
iconst_0
aaload
goto 4
StackMap locals: com.zaxxer.hikari.pool.HikariPool java.lang.String[]
StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int
3: ldc ""
StackMap locals: com.zaxxer.hikari.pool.HikariPool java.lang.String[]
StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
4: aastore
dup
iconst_2
5: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_3
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getActiveConnections:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_4
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getIdleConnections:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_5
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getThreadsAwaitingConnection:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
6: invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 8 1 prefix [Ljava/lang/String;
MethodParameters:
Name Flags
prefix
void recycle(com.zaxxer.hikari.pool.PoolEntry);
descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
aload 1
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordConnectionUsage:(Lcom/zaxxer/hikari/pool/PoolEntry;)V
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 1
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.requite:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 3 1 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
MethodParameters:
Name Flags
poolEntry final
void closeConnection(com.zaxxer.hikari.pool.PoolEntry, java.lang.String);
descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 1
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
ifeq 3
1: aload 1
invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
astore 3
start local 3 2: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
aload 0
aload 3
aload 2
invokedynamic run(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/sql/Connection;Ljava/lang/String;)Ljava/lang/Runnable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()V
com/zaxxer/hikari/pool/HikariPool.lambda$1(Ljava/sql/Connection;Ljava/lang/String;)V (7)
()V
invokevirtual java.util.concurrent.ThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
end local 3 3: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 4 1 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
0 4 2 closureReason Ljava/lang/String;
2 3 3 connection Ljava/sql/Connection;
MethodParameters:
Name Flags
poolEntry final
closureReason final
int[] getPoolStateCounts();
descriptor: ()[I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getStateCounts:()[I
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
private com.zaxxer.hikari.pool.PoolEntry createPoolEntry();
descriptor: ()Lcom/zaxxer/hikari/pool/PoolEntry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=8, args_size=1
start local 0 0: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.newPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
astore 1
start local 1 1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getMaxLifetime:()J
lstore 2
start local 2 2: lload 2
lconst_0
lcmp
ifle 11
3: lload 2
ldc 10000
lcmp
ifle 4
invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
lload 2
ldc 40
ldiv
invokevirtual java.util.concurrent.ThreadLocalRandom.nextLong:(J)J
goto 5
StackMap locals: com.zaxxer.hikari.pool.PoolEntry long
StackMap stack:
4: lconst_0
StackMap locals:
StackMap stack: long
5: lstore 4
start local 4 6: lload 2
lload 4
lsub
lstore 6
start local 6 7: aload 1
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
8: aload 0
aload 1
invokedynamic run(Lcom/zaxxer/hikari/pool/HikariPool;Lcom/zaxxer/hikari/pool/PoolEntry;)Ljava/lang/Runnable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()V
com/zaxxer/hikari/pool/HikariPool.lambda$2(Lcom/zaxxer/hikari/pool/PoolEntry;)V (7)
()V
9: lload 6
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
10: invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
invokevirtual com.zaxxer.hikari.pool.PoolEntry.setFutureEol:(Ljava/util/concurrent/ScheduledFuture;)V
end local 6 end local 4 11: StackMap locals:
StackMap stack:
aload 1
12: areturn
end local 2 end local 1 13: StackMap locals: com.zaxxer.hikari.pool.HikariPool
StackMap stack: com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
astore 1
start local 1 14: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
ifne 21
15: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Error thrown while acquiring connection from data source"
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aload 1
invokevirtual com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException.getCause:()Ljava/lang/Throwable;
invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
16: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.lastConnectionFailure:Ljava/util/concurrent/atomic/AtomicReference;
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
end local 1 17: goto 21
18: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 19: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
ifne 21
20: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Cannot acquire connection from data source"
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aload 1
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 1 21: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lcom/zaxxer/hikari/pool/HikariPool;
1 13 1 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
2 13 2 maxLifetime J
6 11 4 variance J
7 11 6 lifetime J
14 17 1 e Lcom/zaxxer/hikari/pool/PoolBase$ConnectionSetupException;
19 21 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 12 13 Class com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
0 12 18 Class java.lang.Exception
private synchronized void fillPool();
descriptor: ()V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
isub
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getIdleConnections:()I
isub
invokestatic java.lang.Math.min:(II)I
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
invokeinterface java.util.Collection.size:()I
2: isub
istore 1
start local 1 3: iload 1
ifgt 4
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Fill pool skipped, pool is at sufficient level."
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
4: StackMap locals: int
StackMap stack:
iconst_0
istore 2
start local 2 5: goto 10
6: StackMap locals: int
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
iload 2
iload 1
iconst_1
isub
if_icmpge 7
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
goto 8
StackMap locals:
StackMap stack: java.util.concurrent.ThreadPoolExecutor
7: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.postFillPoolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
StackMap locals: com.zaxxer.hikari.pool.HikariPool int int
StackMap stack: java.util.concurrent.ThreadPoolExecutor com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
8: invokevirtual java.util.concurrent.ThreadPoolExecutor.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
pop
9: iinc 2 1
StackMap locals:
StackMap stack:
10: iload 2
iload 1
if_icmplt 6
end local 2 11: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/zaxxer/hikari/pool/HikariPool;
3 12 1 connectionsToAdd I
5 11 2 i I
private void abortActiveConnections(java.util.concurrent.ExecutorService);
descriptor: (Ljava/util/concurrent/ExecutorService;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
iconst_1
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.values:(I)Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 12
StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.zaxxer.hikari.pool.PoolEntry
astore 2
start local 2 2: aload 2
invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
astore 4
start local 4 3: aload 4
aload 1
invokeinterface java.sql.Connection.abort:(Ljava/util/concurrent/Executor;)V
4: goto 11
5: StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService com.zaxxer.hikari.pool.PoolEntry java.util.Iterator java.sql.Connection
StackMap stack: java.lang.Throwable
pop
6: aload 0
aload 4
ldc "(connection aborted during shutdown)"
invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
7: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 2
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
pop
goto 12
8: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
9: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 2
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
pop
10: aload 5
athrow
11: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 2
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
pop
end local 4 end local 2 12: StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 14 1 assassinExecutor Ljava/util/concurrent/ExecutorService;
2 12 2 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
3 12 4 connection Ljava/sql/Connection;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
3 7 8 any
MethodParameters:
Name Flags
assassinExecutor final
private void checkFailFast();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
lstore 1
start local 1 1: lload 1
lconst_0
lcmp
ifge 3
2: return
3: StackMap locals: long
StackMap stack:
invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
lstore 3
start local 3 4: StackMap locals: long
StackMap stack:
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.createPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
astore 5
start local 5 5: aload 5
ifnull 12
6: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
ifle 10
7: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 5
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.add:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)V
8: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Added connection {}"
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aload 5
getfield com.zaxxer.hikari.pool.PoolEntry.connection:Ljava/sql/Connection;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
9: goto 11
10: StackMap locals: com.zaxxer.hikari.pool.PoolEntry
StackMap stack:
aload 0
aload 5
invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
ldc "(initialization check complete and minimumIdle is zero)"
invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
11: StackMap locals:
StackMap stack:
return
12: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
instanceof com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
ifeq 14
13: aload 0
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
invokevirtual java.lang.Exception.getCause:()Ljava/lang/Throwable;
invokevirtual com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException:(Ljava/lang/Throwable;)V
14: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
lconst_1
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic com.zaxxer.hikari.util.UtilityElf.quietlySleep:(J)V
end local 5 15: lload 3
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
lload 1
16: lcmp
iflt 4
17: lload 1
lconst_0
lcmp
ifle 19
18: aload 0
aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
invokevirtual com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException:(Ljava/lang/Throwable;)V
19: StackMap locals:
StackMap stack:
return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/zaxxer/hikari/pool/HikariPool;
1 20 1 initializationTimeout J
4 20 3 startTime J
5 15 5 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
private void throwPoolInitializationException(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
ldc "{} - Exception during pool initialization."
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
aload 1
invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
1: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.destroyHouseKeepingExecutorService:()V
2: new com.zaxxer.hikari.pool.HikariPool$PoolInitializationException
dup
aload 1
invokespecial com.zaxxer.hikari.pool.HikariPool$PoolInitializationException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 3 1 t Ljava/lang/Throwable;
MethodParameters:
Name Flags
t
private boolean softEvictConnection(com.zaxxer.hikari.pool.PoolEntry, java.lang.String, boolean);
descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual com.zaxxer.hikari.pool.PoolEntry.markEvicted:()V
1: iload 3
ifne 2
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
aload 1
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.reserve:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
ifeq 4
2: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.zaxxer.hikari.pool.HikariPool.closeConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 5 1 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
0 5 2 reason Ljava/lang/String;
0 5 3 owner Z
MethodParameters:
Name Flags
poolEntry final
reason final
owner final
private java.util.concurrent.ScheduledExecutorService initializeHouseKeepingExecutorService();
descriptor: ()Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
ifnonnull 6
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
aload 0
invokedynamic get(Lcom/zaxxer/hikari/pool/HikariPool;)Ljava/util/function/Supplier;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
com/zaxxer/hikari/pool/HikariPool.lambda$3()Ljava/util/concurrent/ThreadFactory; (7)
()Ljava/util/concurrent/ThreadFactory;
invokevirtual java.util.Optional.orElseGet:(Ljava/util/function/Supplier;)Ljava/lang/Object;
checkcast java.util.concurrent.ThreadFactory
astore 1
start local 1 2: new java.util.concurrent.ScheduledThreadPoolExecutor
dup
iconst_1
aload 1
new java.util.concurrent.ThreadPoolExecutor$DiscardPolicy
dup
invokespecial java.util.concurrent.ThreadPoolExecutor$DiscardPolicy.<init>:()V
invokespecial java.util.concurrent.ScheduledThreadPoolExecutor.<init>:(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
astore 2
start local 2 3: aload 2
iconst_0
invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy:(Z)V
4: aload 2
iconst_1
invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setRemoveOnCancelPolicy:(Z)V
5: aload 2
areturn
end local 2 end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/zaxxer/hikari/pool/HikariPool;
2 6 1 threadFactory Ljava/util/concurrent/ThreadFactory;
3 6 2 executor Ljava/util/concurrent/ScheduledThreadPoolExecutor;
private void destroyHouseKeepingExecutorService();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
ifnonnull 2
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
pop
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/zaxxer/hikari/pool/HikariPool;
private com.zaxxer.hikari.metrics.PoolStats getPoolStats();
descriptor: ()Lcom/zaxxer/hikari/metrics/PoolStats;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=1, args_size=1
start local 0 0: new com.zaxxer.hikari.pool.HikariPool$1
dup
aload 0
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
lconst_1
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokespecial com.zaxxer.hikari.pool.HikariPool$1.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;J)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
private java.sql.SQLException createTimeoutException(long);
descriptor: (J)Ljava/sql/SQLException;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "Timeout failure "
aastore
invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordConnectionTimeout:()V
2: aconst_null
astore 3
start local 3 3: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
astore 4
start local 4 4: aload 4
instanceof java.sql.SQLException
ifeq 6
5: aload 4
checkcast java.sql.SQLException
invokevirtual java.sql.SQLException.getSQLState:()Ljava/lang/String;
astore 3
6: StackMap locals: java.lang.String java.lang.Throwable
StackMap stack:
new java.sql.SQLTransientConnectionException
dup
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " - Connection is not available, request timed out after "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 3
aload 4
invokespecial java.sql.SQLTransientConnectionException.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
astore 5
start local 5 7: aload 4
instanceof java.sql.SQLException
ifeq 9
8: aload 5
aload 4
checkcast java.sql.SQLException
invokevirtual java.sql.SQLException.setNextException:(Ljava/sql/SQLException;)V
9: StackMap locals: java.sql.SQLException
StackMap stack:
aload 5
areturn
end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 10 1 startTime J
3 10 3 sqlState Ljava/lang/String;
4 10 4 originalException Ljava/lang/Throwable;
7 10 5 connectionException Ljava/sql/SQLException;
MethodParameters:
Name Flags
startTime
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokespecial com.zaxxer.hikari.pool.PoolBase.toString:()Ljava/lang/String;
areturn
LocalVariableTable:
Start End Slot Name Signature
public javax.sql.DataSource getUnwrappedDataSource();
descriptor: ()Ljavax/sql/DataSource;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokespecial com.zaxxer.hikari.pool.PoolBase.getUnwrappedDataSource:()Ljavax/sql/DataSource;
areturn
LocalVariableTable:
Start End Slot Name Signature
private void lambda$0(com.zaxxer.hikari.pool.PoolEntry);
descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
ldc "(connection evicted)"
iconst_0
invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
0 1 1 poolEntry Lcom/zaxxer/hikari/pool/PoolEntry;
private void lambda$1(java.sql.Connection, java.lang.String);
descriptor: (Ljava/sql/Connection;Ljava/lang/String;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
start local 0 0: aload 0
aload 1
aload 2
invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
1: aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
ifne 3
2: aload 0
invokevirtual com.zaxxer.hikari.pool.HikariPool.fillPool:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/zaxxer/hikari/pool/HikariPool;
private void lambda$2(com.zaxxer.hikari.pool.PoolEntry);
descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=4, locals=2, args_size=2
start local 0 0: aload 0
aload 1
ldc "(connection has passed maxLifetime)"
iconst_0
invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
ifeq 2
1: aload 0
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getWaitingThreadCount:()I
invokevirtual com.zaxxer.hikari.pool.HikariPool.addBagItem:(I)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/zaxxer/hikari/pool/HikariPool;
private java.util.concurrent.ThreadFactory lambda$3();
descriptor: ()Ljava/util/concurrent/ThreadFactory;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: new com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory
dup
new java.lang.StringBuilder
dup
aload 0
getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " housekeeper"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_1
invokespecial com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory.<init>:(Ljava/lang/String;Z)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/zaxxer/hikari/pool/HikariPool;
}
SourceFile: "HikariPool.java"
NestMembers:
com.zaxxer.hikari.pool.HikariPool$1 com.zaxxer.hikari.pool.HikariPool$HouseKeeper com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator com.zaxxer.hikari.pool.HikariPool$PoolInitializationException
InnerClasses:
com.zaxxer.hikari.pool.HikariPool$1
private final HouseKeeper = com.zaxxer.hikari.pool.HikariPool$HouseKeeper of com.zaxxer.hikari.pool.HikariPool
private final PoolEntryCreator = com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator of com.zaxxer.hikari.pool.HikariPool
public PoolInitializationException = com.zaxxer.hikari.pool.HikariPool$PoolInitializationException of com.zaxxer.hikari.pool.HikariPool
ConnectionSetupException = com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException of com.zaxxer.hikari.pool.PoolBase
abstract IMetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
MetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
final NopMetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
public abstract IBagStateListener = com.zaxxer.hikari.util.ConcurrentBag$IBagStateListener of com.zaxxer.hikari.util.ConcurrentBag
public abstract IConcurrentBagEntry = com.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry of com.zaxxer.hikari.util.ConcurrentBag
public final DefaultThreadFactory = com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory of com.zaxxer.hikari.util.UtilityElf
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public CallerRunsPolicy = java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy of java.util.concurrent.ThreadPoolExecutor
public DiscardOldestPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy of java.util.concurrent.ThreadPoolExecutor
public DiscardPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardPolicy of java.util.concurrent.ThreadPoolExecutor