У меня есть Hikari Connection Pool, и он настроен как показано ниже
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(dbProps.getUrl());
hikariConfig.setUsername(dbProps.getUser());
hikariConfig.setPassword(dbProps.getPass());
hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
hikariConfig.setMaximumPoolSize(Runtime.getRuntime().availableProcessors() * 5 + 2);
hikariConfig.setIdleTimeout(36000);
hikariConfig.setConnectionTestQuery("SELECT 1;");
hikariConfig.setConnectionTimeout(20000);
hikariConfig.setMaxLifetime(1440000);
hikariConfig.setLeakDetectionThreshold(3000); // LEAK DETECTION THRESHOLD
dataSource = new HikariDataSource(hikariConfig);
И некоторые сведения о БД извлекаются, как показано ниже:
public class SomeDBFetcher {
private DataSource dataSource;
public SomeDBFetcher(final DataSource dataSource) {
this.dataSource = dataSource;
}
public void someMethod() {
try (final var conn = dataSource.getConnection(); // CONNECTION LEAKS ?
final var stmt = conn.prepareStatement("SOME QUERY")) {
// SOME DB
}
}
}
В журналах Я вижу утечки соединения. Почему происходит утечка соединения?