'Possibly consider using a shorter maxLifetime value - hikari connection pool spring boot
After starting my SpringBoot application, getting an exception on few minutes of the server startup. Did not use any HikariPool Configuration externally, Spring Boot is using HikariPool by default This is the error I am getting in the console:
2020-02-20 03:16:23 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@4c4180c8 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:28 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@679c2f50 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:33 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@16083061 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:38 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@4fcaf421 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:43 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@33df5d54 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:48 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@373d288c (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:48 - SQL Error: 0, SQLState: 08003
2020-02-20 03:16:48 - HikariPool-4 - Connection is not available, request timed out after
30156ms.
2020-02-20 03:16:48 - No operations allowed after connection closed.
2020-02-20 03:16:48 - Servlet.service() for servlet [dispatcherServlet] in context with path
[] threw exception [Request processing failed; nested exception is
org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC
Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to
acquire JDBC Connection] with root cause
Solution 1:[1]
The problem is that the default value of the spring.datasource.hikari.maxLifetime
property (default of 30 minutes, https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby) is higher than the database's wait_timeout
, 10 minutes in my case.
So you have two options, either decrease the hikari.maxLifetime
below 10 minutes, or increase the database's wait_timeout
property.
Solution 2:[2]
You can set the value as below in the application.properties
file
spring.datasource.hikari.maxLifeTime : 600000 #10 minutes wait time
Solution 3:[3]
In my case, I solved the problem through this setting
@Configuration
public class HikariSetting{
@Bean
public HikariConfig config() {
HikariConfig hikariConfig = new HikariConfig();
// other setting
hikariConfig.addDataSourceProperty("socketTimeout", 600000);
hikariConfig.setMaxLifetime(600000);
return hikariConfig;
}
}
reference this
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Kirby |
Solution 2 | Kirby |
Solution 3 | Carmel |