Issue with Hikari Pool and Jboss DB2 Connection

61 views Asked by At

I have a Spring Boot application which uses the Hikari Pool for DB2 connection. This application is deployed using Jboss.

When I enabled the following log, I could see that there is no need for new connection, It is sufficient as below

23:09:07,246 INFO  [stdout] (HikariPool-3 housekeeper) 2024-02-08 23:09:07.246 | DEBUG | com.zaxxer.hikari.pool.HikariPool:421   | HikariPool-3 - Before cleanup stats (total=30, active=0, idle=30, waiting=0)
23:09:07,246 INFO  [stdout] (HikariPool-3 housekeeper) 2024-02-08 23:09:07.246 | DEBUG | com.zaxxer.hikari.pool.HikariPool:421   | HikariPool-3 - After cleanup  stats (total=30, active=0, idle=30, waiting=0)
23:09:07,246 INFO  [stdout] (HikariPool-3 housekeeper) 2024-02-08 23:09:07.246 | DEBUG | com.zaxxer.hikari.pool.HikariPool:518   | HikariPool-3 - Fill pool skipped, pool is at sufficient level.

Basically If there is no new connection needed, after 20 seconds, I get this WARNING, May I know why I get this warning and how to rectify it

23:09:20,158 WARN  [org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory] (HikariPool-1 connection adder) IJ030027: Destroying connection that is not valid, due to the following exception: com.ibm.db2.jcc.t4.b@28052227: com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2030][11211][4.31.10] A communication error occurred during operations on the connection's underlying socket, socket input stream, 
or socket output stream.  Error location: Reply.fill() - socketInputStream.read (-1).  Message: Read timed out. ERRORCODE=-4499, SQLSTATE=08001
    at com.ibm.db2.jcc.am.b7.a(b7.java:338)
    at com.ibm.db2.jcc.t4.a.a(a.java:573)
    at com.ibm.db2.jcc.t4.a.a(a.java:557)
    at com.ibm.db2.jcc.t4.a.a(a.java:552)
    at com.ibm.db2.jcc.t4.a.b(a.java:1709)
    at com.ibm.db2.jcc.t4.y.b(y.java:264)
    at com.ibm.db2.jcc.t4.y.c(y.java:342)
    at com.ibm.db2.jcc.t4.y.c(y.java:455)
    at com.ibm.db2.jcc.t4.y.v(y.java:1230)
    at com.ibm.db2.jcc.t4.ab.b(ab.java:93)
    at com.ibm.db2.jcc.t4.p.a(p.java:32)
    at com.ibm.db2.jcc.t4.av.i(av.java:150)
    at com.ibm.db2.jcc.am.k_.al(k_.java:2223)
    at com.ibm.db2.jcc.am.k_.a(k_.java:3351)
    at com.ibm.db2.jcc.am.k_.e(k_.java:1135)
    at com.ibm.db2.jcc.am.k_.execute(k_.java:1114)
    at org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker.isValidConnection(DB2ValidConnectionChecker.java:65)
    at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:1372)
    at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.getInvalidConnections(BaseWrapperManagedConnectionFactory.java:1179)
    at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:382)
    at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:640)
    at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:605)
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
    at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:440)
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
    at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:151)
    at org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
    at com.zaxxer.hikari.pool.HikariPool.access$100(HikariPool.java:71)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:726)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:171)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:464)
    at sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:68)
    at sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1341)
    at sun.security.ssl.SSLSocketImpl.access$300(SSLSocketImpl.java:73)
    at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:957)
    at com.ibm.db2.jcc.t4.y.b(y.java:230)
    ... 31 more

Pool configuration :

connection-timeout=180000
minimum-idle=30
maximum-pool-size=700
idle-timeout=120000
max-lifetime=300000
auto-commit=true
leak-detection-threshold=180000

Hikari Version - 4.0.3
0

There are 0 answers