자바 어플리케이션에서 open API로부터 데이터를 받아오기 위해, 해당 api 문서에 따라 Http 통신을 편리하게 할 수 있도록 지원하는 OkHttp 라이브러리를 사용하고 있다.
그런데 사용 중에 콘솔 창에 아래와 같은 경고 메시지가 출력되어서 확인해보았다.
A connection to https://apis.openapi.sk.com/ was leaked.
Did you forget to close a response body? To see where this was allocated,
set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE)
써 있는 내용 그대로, response body를 close 하지 않은 상황이다.
반납해야 할 connection을 반납하지 않아서, 사용할 수 있는 connection 자원이 줄어들고 있어 leaked(누수)되었다는 것이다.
response.close() 코드를 추가하여 해결되었다.
OkHttp 라이브러리를 통해 통신을 할 때,
OkHttpClient 객체를 생성해서 요청을 보냈다. 이 과정에서 ConnectionPool을 이용하도록 구현되어있기 때문에, connection 자원을 반납하지 않고 계속해서 요청한다면 사용 가능한 자원은 모두 소모될 수 있다.