HikariCP
HikariCP copied to clipboard
Hikari got Invalid Operation, NOT Connected when check connection state
Hi I use hikari 5.0 and spring 2.5.2 with java 11
My hikari connection got oracle.net.ns.NetException in detail.In high level got Connection is not available, request timed out after 60005ms. We can change validation or max timeout but we try to understand root cause why we got com.zaxxer.hikari.pool.PoolBase.isConnectionDead oracle.net.ns.NetException
regards
oracle.net.ns.NetException Message: Invalid Operation, NOT Connected Stacktrace: oracle.net.nt.TcpNTAdapter.setOption(TcpNTAdapter.java:344) oracle.net.ns.NSProtocol.setOption(NSProtocol.java:501) oracle.net.ns.NSProtocol.setSocketReadTimeout(NSProtocol.java:748) oracle.jdbc.driver.T4CConnection.doSetNetworkTimeout(T4CConnection.java:7677) oracle.jdbc.driver.PhysicalConnection.setNetworkTimeout(PhysicalConnection.java:9408) com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:561) com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:168) com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:170) com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146) com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:38) org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:108) org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:138) org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:50) org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:149) org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:176) org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:151) org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:2097) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2034) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012) org.hibernate.loader.Loader.doQuery(Loader.java:948) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349) org.hibernate.loader.Loader.doList(Loader.java:2843) org.hibernate.loader.Loader.doList(Loader.java:2825)
Exception: java.sql.SQLTransientConnectionException Message: MyHikariPool - Connection is not available, request timed out after 60005ms. Stacktrace: com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696) com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:181) com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146) com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:38) org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:108) org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:138) org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:50) org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:149
01-11-2021 06:50:48.959 [MyHikariPool housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool.fillPool - MyHikariPool - Fill pool skipped, pool has sufficient level or currently being filled (queueDepth=0. 01-11-2021 06:50:55.315 [https-jsse-nio-8080-exec-1] WARN com.zaxxer.hikari.pool.PoolBase.isConnectionDead - MyHikariPool - Failed to validate connection oracle.jdbc.driver.T4CConnection@12f7a700 (IO Error: Invalid Operation, NOT Connected). Possibly consider using a shorter maxLifetime value. 01-11-2021 06:50:55.316 [MyHikariPool connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase.quietlyCloseConnection - MyHikariPool - Closing connection oracle.jdbc.driver.T4CConnection@12f7a700: (connection is dead) 01-11-2021 06:50:55.316 [https-jsse-nio-8080-exec-1] DEBUG com.zaxxer.hikari.pool.HikariPool.logPoolState - MyHikariPool - Timeout failure stats (total=3, active=0, idle=3, waiting=0) 01-11-2021 06:50:55.317 [https-jsse-nio-8080-exec-1] WARN o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions - SQL Error: 0, SQLState: 08006 01-11-2021 06:50:55.317 [https-jsse-nio-8080-exec-1] ERROR o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions - MyHikariPool - Connection is not available, request timed out after 60005ms. 01-11-2021 06:50:55.317 [https-jsse-nio-8080-exec-1] WARN o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions - SQL Error: 17002, SQLState: 08006 01-11-2021 06:50:55.317 [https-jsse-nio-8080-exec-1] ERROR o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions - IO Error: Invalid Operation, NOT Connected
Is there any solution , you found to resolve the issue.
I am facing the similar type of issue
We solve this issue by setting idleTimeout, maxLifeTime, keepAliveTime and validationTimeout properties all together.
Our hikari config looks like this; minimumPoolSize=3 maximumPoolSize=5 idleTimeout=600000 maxLifetime=1800000 validationTimeout=120000 keepaliveTime=600000