HikariCP icon indicating copy to clipboard operation
HikariCP copied to clipboard

Hikari got Invalid Operation, NOT Connected when check connection state

Open BilgehanYildiz opened this issue 2 years ago • 2 comments

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

BilgehanYildiz avatar Nov 01 '21 07:11 BilgehanYildiz

Is there any solution , you found to resolve the issue.

I am facing the similar type of issue

bkshah1986 avatar Oct 23 '23 05:10 bkshah1986

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

macrodepy avatar Oct 23 '23 08:10 macrodepy