Issue
I am using Spring Boot application which has API controller to generate reports . The actual service function is wrapped around @Async annotation and function makes DB calls and generates the csv reports . I am also using Hikari CP for connection pool management and JPA + QueryDSL for forming select queries .
I am seeing strange issue in that DB connections are not being released after the files are successfully generated. Every new call to the controller/service function creates new active connections and it remains active . Its not getting released because of which I am getting Connection is not available error from Hikari once my max pool size limit is reached.
Any suggestions why connection is not being released . The service function issues only select queries , no updates or inserts.
Hikari CP configs:
spring.datasource.hikari.maximum-pool-size: "80"
spring.datasource.hikari.idle-timeout: "300000"
spring.datasource.hikari.connectionTimeout: "600000"
spring.datasource.hikari.minimum-idle: "15"
My service function
@Async
@Override
public void exportListing(String[] filter) {
try {
}
catch(Exception e)
{
}
Solution
I fixed it by wrapping it within @Transactional block which ensures that DB connections are closed once the function completes.
Answered By - Ladu anand
Answer Checked By - Marilyn (JavaFixing Volunteer)