본문 바로가기

Programing/OpenSource

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

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 버전인데???