Programing/OpenSource

[hikari.pool] 커넥션 누수가 감지되었지만 오탐이다

나모찾기 2018. 12. 4. 18:47

HikariCP 3.1.0을 사용하고 있다.
백그라운드 처리가 필요해서 별도의 스레드로 느리게 처리되는 곳에서 JPA작업을 하고 있었다.

그런데 아래와 같은 WARN 로그가 보였다.
결과부터 이야기하면 커넥션이 회수가 안되어 누수(leak)이 감지되었다는 것이다.

2018-12-04 17:55:51.378  WARN 14050 --- [ool housekeeper] com.zaxxer.hikari.pool.ProxyLeakTask     [] : Connection leak detection triggered for org.mariadb.jdbc.MariaDbConnection@4ebeb6b9 on thread Thread-19, stack trace follows

그런데 신기하게도 백그라운드 스레드가 끝나는 로그 이후에 이전에 커넥션 누수로 알려진 것이 회수가 되었다는 오탐 로그가 찍혔다.

2018-12-04 17:55:59.744  INFO 14050 --- [      Thread-19] com.zaxxer.hikari.pool.ProxyLeakTask     [] : Previously reported leaked connection org.mariadb.jdbc.MariaDbConnection@4ebeb6b9 on thread Thread-19 was returned to the pool (unleaked)


찾아보니 JPA에서 findOne 같은 동작은 실제 누수로 판단하는 기준 시간(threshold)가 너무 짧게 되어 있어서 누수로 오탐을 한다는 것이다. 이 문제는 2.6.0로 업데이트 하면 해결이 된다고 한다. 이미 3.1 버전인데???