是否可以在版本2.3.9中启用泄漏检测?正如我之前在此question中所说的,Hibernate正在使用HikariCP的2.3.3版本。截至2016年2月,他们已经升级了HikariCP版本,但遗憾的是版本为2.3.9
我需要启用泄漏检测才能修复它们。 我在hibernate配置文件中添加了以下行:
<property name="hibernate.hikari.maximumPoolSize">30</property>
<property name="hibernate.hikari.idleTimeout">30000</property>
<property name="hibernate.hikari.dataSource.leakDetectionThreshold">30000</property>
前两行可以在调试日志中看到,但是当我添加第三行时,我无法运行应用程序。 我也尝试使用代码添加它,但它仍然无法正常工作。我收到以下错误:
HHH000130: Instantiating explicit connection provider: org.hibernate.hikaricp.internal.HikariCPConnectionProvider
Initial SessionFactory creation failed.org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]Initial SessionFactory creation failed.Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
答案 0 :(得分:3)
leakDetectionThreshold不是数据源的属性,它是hikaricp特有的。 尝试删除word&#39; dataSource&#39;为:
a
答案 1 :(得分:0)
对我来说,leakDetectionThreshold属性无法正常工作。尝试增加其余的“超时”属性,然后查看对您有用的内容。
private DataSource tenantDataSource() {
HikariConfig config = new HikariConfig();
config.setValidationTimeout(60000);
config.setConnectionTimeout(60000);
config.setIdleTimeout(60000);
config.setInitializationFailTimeout(60000);
config.setLeakDetectionThreshold(60000);
...
the rest of the Hikari configuration
...
return HikariDataSource(config);
}
当然,您也可以在.yml文件中更改这些值:
spring:
datasource:
hikari:
validation-timeout: 60000
leak-detection-threshold: 60000
connection-timeout: 60000
idle-timeout: 60000
initialization-fail-timeout: 60000
仍然尝试调查为什么会发生这种情况,因为经常会出现这些异常是不正常的。
另外,看看这个question